我有一个未装饰的JFrame
其中有很多components
在其中(例如 JSplitPanes
、 JPanels with GridBagLayouts, BoxLayouts, BorderLayouts
等)。构建此代码JFrame
是2500行长度,所以我不会把它放在这里,或者它是简化版本,抱歉。
当我拖动JFrame
时通过right
或bottom
侧面,它可以调整大小,但是当我将其拖动到 left
时或top
侧,components
里面JFrame
抽搐很多,所以看起来很丑。
我的问题是:为什么会发生这种情况?我怎样才能防止它(如果可以的话)?有人在自己的实践中解决这个问题吗?
UPD:我已经为 JFrame
编写了自己的缩放器。它适用于组件数量较少的其他窗口。
最佳答案
调整框架大小会隐式验证所包含的Container
,这会导致每次大小更改时在受影响的组件上调用doLayout()
。调整此 AnimationTest
的大小时,您可以在重复调用 paintComponent()
时看到类似的效果。 。正如您所观察到的,使用数千个组件的扩展性很差。作为替代方案,请利用 flyweight pattern仅渲染可见单元格,如 JTable
、JTree
、JList
等中所做的那样。如果您不能使用其中之一,CellRendererPane
,参见 here ,可能会有所帮助。
关于java - 调整 JFrame 大小时 Swing 组件抽搐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405469/