【发布时间】:2011-05-19 03:40:19
【问题描述】:
我正在尝试使用包含 BoxLayout 的 JFrame(实际上是 Scala 的 Swing 包装器中的 Frame,尽管我不明白这很重要),其中包含多个项目,其中之一更改大小以响应按钮单击(BoxLayout 中的另一项)。
调整大小时,按钮事件处理程序执行以下操作:
- 调用改变大小的项目(
JPanel)的方法;这会为该组件调用setPreferredSize。 - 拨打
packJFrame - 拨打
repaintJFrame
这有一个非常奇怪的警告:JFrame 总是落后一步。因此,如果我将首选 x 尺寸设置为 100、200、300、200、100,则 JFrame 的宽度将为 100、100、200、300、200。
可能出了什么问题,我如何让大小更改传播到 JFrame 窗口大小时?
(更多可能但不相关的细节:Ubuntu 10.10 with Sun Java 1.6.0_24。)
【问题讨论】: