java - 调整 JFrame 大小时 Swing 组件抽搐

标签 java swing jframe layout-manager window-resize

我有一个未装饰的JFrame其中有很多components在其中(例如 JSplitPanesJPanels with GridBagLayouts, BoxLayouts, BorderLayouts 等)。构建此代码JFrame2500行长度,所以我不会把它放在这里,或者它是简化版本,抱歉。

当我拖动JFrame时通过rightbottom侧面,它可以调整大小,但是当我将其拖动到 left 时或top侧,components里面JFrame 抽搐很多,所以看起来很丑。

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

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

最佳答案

调整框架大小会隐式验证所包含的Container,这会导致每次大小更改时在受影响的组件上调用doLayout()。调整此 AnimationTest 的大小时,您可以在重复调用 paintComponent() 时看到类似的效果。 。正如您所观察到的,使用数千个组件的扩展性很差。作为替代方案,请利用 flyweight pattern仅渲染可见单元格,如 JTableJTreeJList 等中所做的那样。如果您不能使用其中之一,CellRendererPane,参见 here ,可能会有所帮助。

关于java - 调整 JFrame 大小时 Swing 组件抽搐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405469/

相关文章:

java - 是否可以将字符串与二维数组中的数组名称进行比较?

java - 如何在 Spring Boot MVC Web 应用程序中进行 bean 注入(inject)

java - 双击按键绑定(bind) Java

用于指定框架大小的 Java Swing 应用程序

java - 播放音乐的Android应用几秒钟后停止工作

java - Gson异常——de-gson复杂对象

Java - 无法从 MySQL StoredProcedure 返回/访问结果集

java - 无法跨程序访问jlabel

java - 如何在java swing中创建3个按钮以占据它们添加到的面板的1/3?

java - 更改背景颜色时 JFrame 闪烁