2

上部に JMenuBar を持つ JFrame があります。

JFrame の真ん中に JPanel を配置し、それをPanel1と呼びます。

次に、 Panel2 extended JPanelという別のクラスを作成し、その上にいくつかの項目を配置します。

JFrame で、ユーザーが JMenuItem の 1 つを選択したときに、Panel1を作成したPanel2クラスに割り当てます。したがって、何とかJFrameで他のパネルを見ることができます!

どうやってやるの?

私が書いたクラスJFrameで:

JPanel Panel2 = new JPanel();
Panel1 = Panel2;

うまくいきません、何か提案はありますか?

4

2 に答える 2

1

いくつかのこと。

最初の発言。フィールド、メソッド、変数の名前の頭文字を小文字にすることをお勧めします。非常に広い大会。

panel2 の GUI エディターで [カスタム作成コード] を選択すると、new Panel2().

JPanel panel1 を Panel2 panel2 と動的に交換する場合、変数を上書きしても効果はありません。panel1 のオブジェクトは、JFrame のいくつかの swing Container に追加されました。

メニュー項目のアクション処理で行う:

EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
        remove(panel1);
        panel1 = new Panel2();
        add(panel1);
        invalidate();
    }
});

ただし、実際に行われることはめったにありません。

于 2013-06-05T12:30:01.130 に答える