为什么我不能从JFrame中取出我的组件?

时间:2014-04-16 14:49:03

标签: java swing

我已经使用我需要的一些额外功能扩展了JPanel类,然后我创建了它的实例,如下所示:

CustomPanel pan = new CustomPanel();

然后我将它添加到我的框架中:

frame.getContentPane().add(pan);

然后我需要将面板从框架上移开,我这样做:

for (Component c : frame.getComponents())
{
    if(c instanceof CustomPanel)
    {
        System.out.println("Should get here");
    }       
}

但它在内存中不存在CustomPanel,而是作为JPanel存在,为什么会这样?

2 个答案:

答案 0 :(得分:3)

根据我的理解,JFrame包含一个JPanel,当您使用getContentPane()添加自定义面板到JFrame。添加(平移)时,您实际上是将自定义面板添加到JFrame' s JPanel的。我猜测你必须调用frame.getContentPane()。getComponents();迭代JFrame面板中包含的组件。

答案 1 :(得分:0)

你的内容应该是:

for (Component c : frame.getContentPane().getComponents())

您没有将Panel添加到框架中,而是将其添加到内容窗格中。