setVisible(true)更改所有可见的实例

时间:2012-08-03 15:28:04

标签: java swing jpanel

我有一个扩展JPanel的类,当我尝试将该类的一个特定实例设置为可见时,所有其他类也会扩展。想法?

在“两个”之前,CENTER设置为可见: Before 'two' opens

在“两个”中间设置可见: enter image description here

注意所有其他实例都打开了。这是我用我的代码做的最好的,因为它非常抽象:

致电 -

display.mainScrollPane.getMainPanel().getMachineListPanel().getMachine("two").panel.showPanel();

2 个答案:

答案 0 :(得分:0)

没有你的sscce很难说。

  • 如果您使用的是BorderLayout,请注意CENTER中的组件将展开以填充可用空间。或者,请考虑BoxLayout,图示为herehere

  • 如果您要在 pack()setVisible()之后添加组件,请务必按建议validate()repaint() {{3 }}

答案 1 :(得分:0)

原因是MachineListPanel实现了GridLayout。根据定义,GridLayout强制所有元素的高度和宽度相同 - 即。当其中一个组件的CENTER设置为可见时,还必须为布局中的所有其他元素分配空间。