0

JFrame クラスが 1 つ、JPanel クラスが 2 つ、3 つのクラスがあります。次のように、最初のJPanelをJFrameに追加しました

 public JFrame() {

    add(new 1stPanel(this));


    setVisible(true);
    setLayout(null);
}

次に、最初のパネルのボタンでアクションリスナーを使用して、それを削除し、別のクラスにある他のパネルを追加したいと考えています。各クラスに変数を与え、単純な remove() と add() を次のように使用してみました:

private 1stpanel 1p;
private 2ndpanel 2p;

btn.addActionListener((new ActionListener(){
        public void actionPerformed(ActionEvent  e)
            {
            remove(1p);
            add(2p);
            validate();
            repaint();
            }
        }));

私も JF​​rame.remove(1p) を使用しようとしましたが、それも機能しません。removeAll() を実行すると、1stpanel JPanel のすべてが削除されますが、2ndpanel を追加できません。1 番目のパネルまたは 1 番目のパネル クラスを取り出し、別のクラスにある 2 番目のパネルを追加するには、どのコードを使用できますか。事前に助けてくれてありがとう。

4

2 に答える 2

4

CardLayoutカード(パネル)を使用して交換してみてください。

あなたの問題は作成である可能性がありますadd(new 1stPanel(this))。ローカル変数を追加しますが、クラスのフィールドを使用します。

于 2013-07-02T10:55:10.043 に答える