如何在添加新页面之前从JFrame中删除JPanel
我已将JPanel添加到JFrame中。我已经动态地添加了JPanel。在动态添加JPanel之后,它保持在之前添加的JPanel附近。我如何删除以前的JPanel?如何在添加新页面之前从JFrame中删除JPanel
PS 我也考虑使用cardlayout - 这是一个好方法吗?
有一种方法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
。
thx!我会尝试!我有一些扩展JPanel类的视图,所以我认为我可以使用“instanceof MyViewClass”来查找必要的面板... – dizpers 2011-12-24 08:35:04
我也尝试在同一个地方添加所有必要的面板并显示\隐藏操作。这比每次删除它更好。但是面板不会像我想要的那样躺在另一个之下。我能做些什么让他们躺在另一个之下? – dizpers 2011-12-24 08:41:52
如果使用'add(comp)',使用'BorderLayout',所有'Components'将被添加到中心。它将使用FIFO的层次结构。 – 2011-12-24 08:51:48
是的,['CardLayout'](http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html)**是一种好方法。 – 2011-12-24 09:17:06
是啊!我现在使用它。我尽我所需。 – dizpers 2011-12-24 15:23:41