[英]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.