经过测试,似乎可以…
private void updatePreferredSize(int n, Point p) { double d = (double) n * 1.08; d = (n > 0) ? 1 / d : -d; int w = (int) (getWidth() * d); int h = (int) (getHeight() * d); preferredSize.setSize(w, h); int offX = (int)(p.x * d) - p.x; int offY = (int)(p.y * d) - p.y; setLocation(getLocation().x-offX,getLocation().y-offY); getParent().doLayout();}更新资料
这是一个解释:该点
p是鼠标相对于的位置
FPanel。由于您正在缩放面板的尺寸,因此
p(相对于面板的尺寸)的位置将以相同的比例缩放。通过从缩放位置减去当前位置,您可以获得调整面板大小时点“移动”了多少。然后,只需在相反方向上将滚动窗格中的面板位置移动相同的量,然后
p放回鼠标光标下方即可。



