2009-05-26 22 views
5

ここでは基本的な質問はほとんどありません。JPanelに追加のJPanelを追加する

は基本的に私はこのようなコードを持っている:

public SuperPanel() { 
    setLayout(new BorderLayout()); 
    add(panel1(), BorderLayout.NORTH); 
    add(panel2(), BorderLayout.CENTER); 
    add(panel3(), BorderLayout.SOUTH); 
} 

を、それはすべてが順調と良い作品。問題は、私がセンターに追加したい別の部分があることです。 add(newPanel(), BorderLayout.CENTER)を使用するだけでは、明らかに機能しません。でもJPanelJPanelに追加することはできますか? supersweetpanel()された状態で

public SuperPanel() { 
    setLayout(new BorderLayout()); 
    add(panel1(), BorderLayout.NORTH); 
    add(supersweetpanel(), BorderLayout.CENTER); 
    add(panel3(), BorderLayout.SOUTH); 
} 

は、だから私は、次の変更を行った

public JPanel supersweetpanel() { 
    JPanel sswp = new JPanel(); 
    setLayout(new BorderLayout()); 
    add(panel2(), BorderLayout.NORTH); 
    return sswp; 
} 

は、今ではpanel1を上書きします!私が何か他のものに設定すると(CENTERSOUTH、何がありますか)、最初の2つのパネルは完全に消えます。ヘルプは非常に感謝しています。

答えて

13

SuperPanelはおそらくJPanelのサブクラスでしょうか?誤ってをthisSuperPanel)に追加していますが、sswpではありません。試してください:

public JPanel supersweetpanel() { 
     JPanel sswp = new JPanel(); 
     sswp.setLayout(new BorderLayout()); 
     sswp.add(panel2(), BorderLayout.NORTH); 
     return sswp; 
    } 
+2

+1です。それはそうしなければなりません。そして、継承を使用することで物事を壊れやすくすることができる理由の良い例が得られます。 – Eddie

+0

ああ、それはまさにそれでした。美しい。 –

+0

エディは何を言った。ほとんどのSwingチュートリアル(そしてSwing GUI)にはこのような悪いコードがあります。 –

関連する問題