java - 当子项调整大小时调整 JFrame 大小 : how to keep up?

标签 java swing scala resize

我正在尝试使用JFrame (实际上,Frame 在 Scala 的 Swing 包装器中,尽管我不明白为什么这很重要)包含一个 BoxLayout它有几个项目,其中一个项目会响应按钮单击而更改大小( BoxLayout 中的另一个项目)。

调整大小时,按钮事件处理程序执行以下操作:

  1. 对项目 ( JPanel ) 调用更改大小的方法;这调用 setPreferredSize对于该组件。
  2. 调用 pack关于JFrame
  3. 调用 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/

相关文章:

java - 为什么没有调用 Broadcast receiver 的 onreceive() 方法?

java - SharedPreferences 可以通过但不保存

java - JTable重新加载数据

java - 按下取消按钮时 Swing DataBinding 回滚发生变化

Java GIS 和 openlayers

java - 理解java泛型方法

java - 分发带有 PID 的 YAJSW 应用程序?

java - 我的答案在第一次输入后总是返回错误并且不会跟踪分数?

Scala 类型标签和性能

postgresql - 删除 Slick 生成的查询中的别名