私はAS3でイベントリスナーを扱ってきましたが、Javaにはないようです(グラフィックコンポーネントを除く)。それは驚くべきことです。
問題は、Java で独自のイベント リスナーを実装するにはどうすればよいかということです。多分誰かが前にその仕事をしましたか?
Listener インターフェイスを定義できます。
public interface EventListener {
void fireEvent (Event e);
}
次に、コードで:
EventListener lst = new EventListener() {
@Override
public void fireEvent (Event e) {
//do what you want with e
}
}
someObject.setListener(lst);
someObject.somethingHappened();
次に、someObject で (実際には、おそらくリスナーのリストを保持します):
public class SomeObject {
private EventListener lst;
public void setListener (EventListener lst) {
this.lst = lst;
}
public void somethingHappened () {
lst.fireEvent(new Event("Something Happened"));
}
}
PropertyChangeListenerでPropertyChangeSupportを使用するか、Observer パターンを使用できます。
まず、リスナーをアタッチできるように、イベントのソースが必要です。カスタム リスナーが必要な場合は、カスタム ソースも実装する必要があります。
listener
Java では、既存のソースとインターフェースを見つけることができます。あなたが言及したように、GUIは通常イベントに基づいています。3D に興味がある場合、レンダリング エンジンは適切な API (例: collision detection
)、ファイル システム フック、プロパティ変更リスナー ( Android
) を提供します。
それはあなたのニーズに依存します。ほとんどの用途では、適切な API を提供するライブラリが既に存在するはずです。
独自のソリューションを実装する場合、アプリケーション全体のイベント処理にはイベント バスが適している場合があります。私の好ましい実装は Guava ライブラリにあります: http://code.google.com/p/guava-libraries/wiki/EventBusExplained
観察したいオブジェクトのObservableクラスを拡張する Java で一種のリスナーを実装でき、リスナーでObserverを実装します。
フレームワークや Observer クラスは必要ありません。1995 年のバージョン 1.0 以降、すべて Java Beans 仕様に組み込まれています。これは、VB プロパティに対する Java の答えであるはずでした。
チュートリアルは次のとおりです。
http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html