【发布时间】:2012-01-05 14:10:46
【问题描述】:
通过add 和remove 手动交换组件后,我在容器上调用validate()。根据文档,
validate 方法用于使容器布局其 再次。当这个容器的 子组件被修改(添加到容器中或从容器中删除,或 布局相关信息更改)后容器已 显示出来。
“重新布置其子组件”这句话让我觉得容器会相应地调整自己的大小,但事实并非如此。相反,在调用validate() 之后,我还需要调用pack() 以查看其所有子组件。
这是为什么?我做错了吗?
【问题讨论】:
-
在使用 Swing 时,我使用
revalidate()。同样,它不会调整框架的大小,但会调整容器的大小,这可能会导致布局发生变化。例如,如果容器位于滚动窗格中,那么您可能会看到添加或删除了滚动条。 -
@camickr - 可能误解了你在说什么,但是对容器进行重新/验证永远不会调整该容器的大小,只会调整其子容器的大小
-
@kleopatra,再看我的评论,我想我不应该使用“容器”这个词。我使用术语“容器”来表示“jpanel”,并试图强调它只会影响“容器”内组件的布局。它不会调整顶级容器(JFrame、JDialog、JWindow)的大小。
-
@camickr 好点!我错过了验证根 :-) 实际上,我认为您的意思是 container 您在编辑后的评论中解释的方式 :-)
标签: java swing resize containers