2011-12-24 7 views
1

JPanelはすでにJFrameに追加されています。そして私はJPanelを動的に追加しました。飛行中にJPanelを追加すると、前に追加されたJPanelの近くにとどまります。以前のJPanelを削除するにはどうすればよいですか?新しいものを追加する前にJFrameからJPanelを削除する方法

PS 私はまた、カードレイアウトの使用について考えています - それは良い方法ですか?

+2

はい、[ 'CardLayout'(http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html)**良い方法です。 –

+0

うん!私は今それを使用します。私はすべて私が必要とする。 – dizpers

答えて

1

は、あなたがこの方法のようにそれを使用しますJFrame

で子コンポーネントを与える方法getComponents()あり:

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クラスを拡張し、ので、私は私も同じ場所に必要なすべてのパネルを追加しようとした... – dizpers

+0

を必要なパネルを見つけるために、「MyViewClassのinstanceof」を使用することができますし、\隠す操作を示しんだと思います。毎回削除するよりも良い方法です。しかしパネルは、私が望むように、パネルの下に横たわっていません。私はそれらを別の下に置くために欲望を行うことはできますか? – dizpers

+0

使用 'BorderLayout'あなたは' '(COMP)を追加使用している場合、すべての' Components'は、中央に追加されます。これは、FIFOの階層を使用します。 –

関連する問題