我有一个未修饰的JFrame
,里面有很多components
(如JSplitPanes
、JPanels with GridBagLayouts, BoxLayouts, BorderLayouts
等)。构建这个JFrame
的代码是2500行长,所以我不会把它放在这里,或者它是简单的版本,对不起。
当我把JFrame
拖到right
或bottom
一侧时,它的大小是可以的,但当我把它拖到left
或top
一侧时,JFrame
内部的components
抽搐很多,所以它看起来很难看。
我的问题是:为什么会发生这种情况?我该如何预防(如果可以的话)?有人在自己的实践中解决这个问题吗?
UPD:我已经为JFrame
编写了自己的resizer。它适用于组件数量较少的其他窗口。
调整帧的大小会隐式验证所包含的Container
,这会导致每次大小更改时在受影响的组件上调用doLayout()
。当调整此AnimationTest
的大小时,您可以在对paintComponent()
的重复调用中看到类似的效果。正如您所观察到的,使用数千个组件的比例很低。另一种选择是,利用蝇量级模式仅渲染可见单元格,如在JTable
、JTree
、JList
等中所做的那样。如果不能使用其中一个,此处所示的CellRendererPane
可能会有所帮助。