我正在尝试使用JFrame
(实际上,Frame
在 Scala 的 Swing 包装器中,尽管我不明白为什么这很重要)包含一个 BoxLayout
它有几个项目,其中一个项目会响应按钮单击而更改大小( BoxLayout
中的另一个项目)。
调整大小时,按钮事件处理程序执行以下操作:
- 对项目 (
JPanel
) 调用更改大小的方法;这调用setPreferredSize
对于该组件。 - 调用
pack
关于JFrame
- 调用
repaint
关于JFrame
这有一个非常奇怪的警告:JFrame 总是落后一步。因此,如果我将首选 x 大小设置为 100、200、300、200、100,则 JFrame 的宽度将为 100、100、200、300、200。
可能出了什么问题,以及如何让尺寸更改按预期传播到 JFrame 窗口尺寸?
(更有可能但希望不是相关细节:Ubuntu 10.10 与 Sun Java 1.6.0_24。)
最佳答案
当您更改组件的大小时,我会尝试重新验证()父容器,以便可以再次调用布局管理器,从而正确地重新计算所有大小。
如果您需要更多帮助,请发布您的SSCCE这说明了问题所在。首先使用 JFrame 尝试此操作,以便如果仍然存在问题,您将知道是否是标准 JDK 类或 Scala 导致了问题。
关于java - 当子项调整大小时调整 JFrame 大小 : how to keep up?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053484/