Java クラスがあり、別のクラスのリスナーを使用したい場合、どうすればよいですか? たとえば、2 つの JFrame があり、そのうちの 1 つにボタンがある場合、別のクラスで何かを実行できるようにすることができます。
1 に答える
1 つのクラスでパブリック メソッドを作成できます。
public void addSomeButtonActionListener(ActionListener listener) {
someButton.addActionListener(listener);
}
これにより、他のオブジェクトが目的のボタンにリスナーを追加できるようになります。ボタンに複数のリスナーが追加されている場合、どのリスナーが最初に起動するか、またはいずれかの順序で起動するという保証はないことに注意してください。
または、すべての Swing コンポーネントに組み込まれている PropertyListener サポートを使用して、独自のバインドされたプロパティを作成し、外部クラスが目的のクラスに PropertyChangeListeners を追加して、バインドされたプロパティの変更をリッスンできるようにすることもできます。詳細については、このチュートリアルをご覧ください。このルートを使用する場合、およびクラスが Swing コンポーネントを拡張する場合、これらのメソッドと SwingPropertyChangeSupport フィールドはすでにすべての Swing コンポーネントの組み込みコンポーネントであるため、独自に記述する必要はありませaddPropertyChangeListener(...)
んremovePropertyChangeListener(...)
。クラスが Swing コンポーネントを拡張しない場合は、上記のメソッドを作成する必要がありますが、GUI クラスの重要なコンポーネントの 1 つの SwingPropertyChangeSupport を引き続き使用できます。
後者のソリューションは私が気に入っているものですが、ビューよりもモデルのバインドされたプロパティを聞くことが多いことがわかりました。
詳細が必要な場合は、コードと問題について詳しく教えてください。