0

JFrame を拡張する MainWindow クラスがあり、アプリケーションで唯一のフレームです。ただし、その内容を変更するJPanelがいくつかあります。MainWindow を渡したいので、グローバル コピーを作成する必要はありません。

これが問題です。MainWindow に偽の JMenuBar があり、それを使って画面を探し回っています。彼らの JMenuItem リスナーでは、MainWindow を this として JPanels に渡すことができません。

クラスを最終的にマークするなど、それを行う方法はありますか、それとも渡す必要があるたびに新しい MainWindow を作成する必要がありますか。データを持ち歩かないので重要ではなく、パフォーマンスはこのような小さな最終プロジェクトにとって大きな問題ではありませんが、より良い方法があるかどうか知りたいですか?

4

3 に答える 3

5

thisリスナーを参照するため、渡すことができませんか? なら使えるはずですMainWindow.this

またはthis、リスナーの外部への参照を作成し、それをパラメーターとして渡します。

于 2012-05-22T17:43:53.617 に答える
0

MainWindow クラスを Outer クラスとして作成し、これを既に行った JFrame に拡張します。MainWindow クラスで、必要な数の内部クラスを作成し、別の方法で ActionListener メソッドを処理できるようにします。

例えば:

  MainWindow extends JFrame {


    MainWindow(){



    }

    class panel1 extends JPanel implements ActionListener{


    }


    class panel2 extends JPanel implements ActionListener{


    }




}

シングルトン パターンを実装して、MainWidow のインスタンスを 1 つだけにすることもできます。

于 2012-05-22T17:48:04.697 に答える
0

Try any of this approaches:

  • Make MainWindow singleton.
  • Mark as final a variable in the method when you create the listener.
  • Use MainWindow.this

For your case use the singleton approach, with that you can access freely from any place of your project.

于 2012-05-22T17:55:31.570 に答える