我已经使用我需要的一些额外功能扩展了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存在,为什么会这样?
答案 0 :(得分:3)
根据我的理解,JFrame包含一个JPanel,当您使用getContentPane()添加自定义面板到JFrame。添加(平移)时,您实际上是将自定义面板添加到JFrame' s JPanel的。我猜测你必须调用frame.getContentPane()。getComponents();迭代JFrame面板中包含的组件。
答案 1 :(得分:0)
你的内容应该是:
for (Component c : frame.getContentPane().getComponents())
您没有将Panel添加到框架中,而是将其添加到内容窗格中。