0

Java Swing ライブラリを使用して小さなメモ帳アプリケーションを構築しようとしています。のコンストラクターを呼び出すメイン関数がありますJFrame (NotepadClass)。これNotepadClassには、MenuDesigner次のようなクラスがあります。

this.setJMenuBar(new MenuDesigner());

別のクラスで書かれたactionListener() を呼び出すクラスをMenuDesigner拡張します。私の質問は次のとおりです。「新規」をクリックすると、入っているタイトルが変わるはずです。2 レベル上のクラスにアクセスするにはどうすればよいですか?JMenuBarMenuActionListenermenuItemNotepadClass

これを達成するには、Java のどの概念を使用する必要がありますか?

4

4 に答える 4

2
于 2012-12-31T17:41:35.820 に答える
1

コードを見ずに明確な答えを出すことは困難ですが、メニューを作成するために別のクラスを作成する理由の1つは、インスタンスをクラスに渡すことができることです。

this.setJMenuBar(new MenuDesigner(notepadClass));

これが、GUIを構築するときに1つまたは複数のモデルクラスを用意するのが良い理由の1つです。

最高レベルのモデルクラスのインスタンスをすべてのGUIコンポーネントに渡すことができ、各コンポーネントは、それらが表すモデルクラスのパーツを取得または設定できます。

于 2012-12-31T17:31:20.660 に答える
0

メニューの actionListener が別のクラスにあるのはなぜですか?

独自のロジックを追加できる新しいクラスを作成implements ActionListenerできます。このようにして、別のファイルで再利用できます。

また、MenuDesignerクラスを独自のファイルに移動して、クラスを分離する必要があります。

于 2012-12-31T17:26:05.313 に答える
0

コンストラクターで NotepadClass を渡し、タイトルを変更するメソッドを提供できます。

もう 1 つのオプションは、NotepadClass 内に ActionListener を構築するか、変数またはメソッドにアクセスできるように、NotepadClass 自体に Actionlistener インターフェイスを実装させることです。

于 2012-12-31T17:21:48.563 に答える