4

ファクトリクラスとメソッドを使用してGUIコンポーネントを生成したいのですが、さまざまなリスナーを宣言してコンポーネントに追加する方法とクラスがわかりません。

以下にリストされているような単純なファクトリクラスがある場合、呼び出し元のクラスに返される前に、ボタンにActionListenerを追加する必要があります。答えが「はい」の場合、リスナーを追加するにはどうすればよいですか?

class GUIFactory
{
    public static JButton getJButton()
    {
        JButton aButton = new JButton();
        return aButton; 
    }
}

getJButton()メソッドを使用してGUIに5つのボタンを追加したいとします。どのボタンがクリックされたかを認識できるように、ActionListenerをどのようにコーディングしますか?

または、リスナーを呼び出し元のクラスに追加する必要がありますか?

JFrame gui = new JFrame();
gui.add(AppFactory.getJButton());

私は以下を試しました

gui.add(GUIFactory.getJButton().addActionListener(new guiButtonListener()));

エラーが発生しました:

ここでは「void」タイプは許可されていません。

4

1 に答える 1

5

addActionListenervoid を返すためです。試す:

JButton button = GUIFactory.getJButton();
button.addActionListener(new guiButtonListener())
gui.add(button);

Swing GUI プログラミングは非常に慣用的であることに注意してください。ビューとモデルを相互に接続するためにBeans Binding (またはその他のバインディング ソリューション) を使用することを好む人もいます。イベント バスを使用すると、結合度が低く、再利用性の高い GUI コンポーネントが得られると主張する人もいるでしょう。Swing Application Framework (現在は非推奨ですが、BSAFは非常に良好な状態です) とGUTSフレームワークもご覧ください。

GUI プログラミングと設計の問題に対処するための多くの試みがあることがわかります。トピックは非常に広く、ソリューションは大きく異なります。

そして、2 つの大きな Swing リッチ コンテンツ プラットフォーム ( NetBeans RCPEclipse RCP ) には、GUI を処理するための非常に特殊な API があります。たとえば、NetBeans RCP はLookupノード、およびWindows API を使用して、開発者を Swing の問題から保護します。Eclipse チームは Swing を捨て、独自の SWT GUI ツールキットを作成しました。優れたデザイン リファレンスが必要な場合は、チュートリアルを参照してください。

于 2010-08-22T21:15:52.430 に答える