我有一个未经修饰的JFrame
,里面有很多components
(例如JSplitPanes
,JPanels with GridBagLayouts, BoxLayouts, BorderLayouts
等)。构建此JFrame
的代码是 2500 行长度,因此我不会将其放在此处,或者它是简单版本,抱歉。
当我向JFrame
或right
方向拖动bottom
时,它会调整大小,但是当我将其拖到left
或top
侧时, components
内的JFrame
抽搐很多,所以看起来非常难看。
我的问题是:为什么会这样?如何防止它(如果可以的话)?有没有人在自己的实践中解决这个问题?
UPD:我为JFrame
编写了自己的缩放器。它适用于其他组件数量较少的窗口。
答案 0 :(得分:4)
调整框架大小会隐式验证附带的Container
,这会导致每次大小更改时在受影响的组件上调用doLayout()
。在调整AnimationTest
的大小时,您可以在重复调用paintComponent()
时看到类似的效果。正如您所观察到的那样,使用数千个组件的规模很小。作为替代方案,利用flyweight pattern仅渲染可见单元格,如JTable
,JTree
,JList
等中所做的那样。如果您不能使用其中一个,CellRendererPane
,见过here,可能会有帮助。