【发布时间】:2013-06-22 09:10:21
【问题描述】:
我很好奇在调整 JFrame 大小时在 Java 中究竟发生了什么。
我之所以问这个问题,是因为我在将组件添加到 JFrame 内的 bigCONtainer(JPanel 类型)时遇到了问题。我想在用户执行某个操作时添加一些东西,但是在 JFrame 以某种方式调整大小之前,组件不会被明显添加。
我在尝试让新组件出现时发现了这一点;我调用了 myJFrame.pack()。作为第二个问题,我想知道 pack() 通常和特定于调整大小的作用。 Java 文档听起来好像会将每个组件的大小调整为其首选大小。如果我决定在我的实现中使用 pack() 来显示新组件,我的解决方案是始终设置首选大小。任何人都可以证明这是一种公认的编程实践吗?这确实是个好主意。
我还尝试了 repaint() 以显示新组件,但没有奏效。
【问题讨论】:
-
为什么代码在 GUI 可见后添加新组件?
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
@AndrewThompson 我正在编写的程序是为了体验。但是,我在用户加载文件后添加了一个标签,以提醒用户程序中发生了什么。
-
"..在用户加载文件后添加标签" 在启动时将标签添加到 GUI 中,无需文本。当有消息给用户时,设置一个文本(可能使用一次性 Swing
Timer来清除该字段)。另请查看工具提示。 -
@AndrewThompson 我有工具提示。我不希望在启动时添加标签。这违反了帖子的前提,但感谢您的想法。
标签: java swing resize jframe repaint