2011-12-24 77 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