繁体   English   中英

调整JFrame大小后会发生什么?

[英]What happens when a JFrame is resized?

我很好奇当JFrame调整大小时,Java中究竟会发生什么。

我问这个是因为我在JFrame中向我的bigCOntainer(类型为JPanel)添加一个组件时遇到了一个问题。 我希望在用户执行某个操作时添加一些内容,但是在JFrame以某种方式调整大小之前,该组件不会被明显添加。

当我做一些尝试让新组件出现时,我发现了这个; 我调用了myJFrame.pack()。 作为第二个问题,我想知道pack()的作用,通常和特定于调整大小。 Java文档使得它将每个组件的大小调整为其首选大小。 我的解决方案,如果我决定在我的实现中使用pack()来显示新组件,则总是设置首选大小。 任何人都可以证明这是一个公认的编程实践吗? 这看起来确实是一个好主意。

我也试过repaint()来显示新的组件但是没有用。

您需要调用revalidate()然后在运行时添加或删除组件的容器上repaint()

revalidate()告诉容器的布局管理器重新布局它包含的组件,这是代码中缺少的。 如果没有此请求,布局不会更改,并且在重新调整GUI大小之前,您不会看到更改,这几乎完全相同。

请注意,如果您在启动时向GUI添加组件,则解决方案是仅添加所有组件后将 pack()setVisible(true)调用到顶级容器。

有关说什么pack()功能,做我们所做的事情 - 阅读源代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM