2011-12-24 74 views
1

我已将JPanel添加到JFrame中。我已经动态地添加了JPanel。在动态添加JPanel之后,它保持在之前添加的JPanel附近。我如何删除以前的JPanel?如何在添加新页面之前从JFrame中删除JPanel

PS 我也考虑使用cardlayout - 这是一个好方法吗?

+2

是的,['CardLayout'](http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html)**是一种好方法。 – 2011-12-24 09:17:06

+0

是啊!我现在使用它。我尽我所需。 – dizpers 2011-12-24 15:23:41

回答

1

有一种方法getComponents(),这将给你在JFrame

子组件,您将使用它像这样:

Component[] comp = frame.getContentPane().getComponents(); 
for(int i=0; i<comp.lenght; i++) 
{ 
    if(comp[i] instanceof JPanel) 
    { 
     frame.remove(comp[i]); 
    } 
} 

注:此修复程序只适用于当你有一个JPanel内部JFrame,否则你会从JFrame删除所有JPanels

+0

thx!我会尝试!我有一些扩展JPanel类的视图,所以我认为我可以使用“instanceof MyViewClass”来查找必要的面板... – dizpers 2011-12-24 08:35:04

+0

我也尝试在同一个地方添加所有必要的面板并显示\隐藏操作。这比每次删除它更好。但是面板不会像我想要的那样躺在另一个之下。我能做些什么让他们躺在另一个之下? – dizpers 2011-12-24 08:41:52

+0

如果使用'add(comp)',使用'BorderLayout',所有'Components'将被添加到中心。它将使用FIFO的层次结构。 – 2011-12-24 08:51:48