调整JFrame大小时,摆动组件会抽搐



我有一个未修饰的JFrame,里面有很多components(如JSplitPanesJPanels with GridBagLayouts, BoxLayouts, BorderLayouts等)。构建这个JFrame的代码是2500行长,所以我不会把它放在这里,或者它是简单的版本,对不起。

当我把JFrame拖到rightbottom一侧时,它的大小是可以的,但当我把它拖到lefttop一侧时,JFrame内部的components抽搐很多,所以它看起来很难看。

我的问题是:为什么会发生这种情况?我该如何预防(如果可以的话)?有人在自己的实践中解决这个问题吗?

UPD:我已经为JFrame编写了自己的resizer。它适用于组件数量较少的其他窗口。

调整帧的大小会隐式验证所包含的Container,这会导致每次大小更改时在受影响的组件上调用doLayout()。当调整此AnimationTest的大小时,您可以在对paintComponent()的重复调用中看到类似的效果。正如您所观察到的,使用数千个组件的比例很低。另一种选择是,利用蝇量级模式仅渲染可见单元格,如在JTableJTreeJList等中所做的那样。如果不能使用其中一个,此处所示的CellRendererPane可能会有所帮助。

最新更新