2012-03-21 1 views
3

私はJFrameを定義するメニューと呼ばれるメニュークラスを持っています。このクラスは、テキストフィールドとボタンを含む2つのJPanelオブジェクトをインスタンス化します。各JPanel拡張クラスの内部には、ボタンを押したときに発生するイベントを処理するプライベート内部クラスがあります。スイングコンポーネントのイベントハンドラ

JPanels内のボタンからトリガーされたイベントを検出する方法がMenuクラスにあるかどうかを知りたい。

MenuクラスのJPanelにリスナーを追加して、これを行うことができますか? :

if(event.getSource() == panel.getButton1()){ 
    //do button1 code 
} 

答えて

3

JPanels実際、すべてのSwingコンポーネントにはプロパティの変更がサポートされているため、PropertyChangeListenerを任意のComponentに簡単に追加して状態の変化をリスンすることができます。状態が変更された後でfirePropertyChange(...)を呼び出すように状態が変化しているコードで確認してください。

1

コンポーネント(例:ActionListenerのインスタンス)には常にリスナーを追加して処理できます。

メニュー/レイアウトとイベントの処理を分割することを検討する必要があります。つまり、別のコントローラを使用してイベントをリッスンして処理してください。

関連する問題