JAVAイベントリスニングメカニズムのカスタマイズ
2862 ワード
JAVAにおけるイベントメカニズムの参加者には,Event,EventSource,Listenerの3つの役割がある.
1.Event:イベント発生時の具体的な「イベント」であり、Listenerの対応するメソッドに用いられ、パラメータとしてListenerのメソッドに一般的に存在する.
2.EventSource:イベントソース、その役割は主にイベントとリスニングを統一的に管理し、具体的にイベントを受け入れるエンティティ、例えばbuttonをクリックすると、buttonはEventSourceであり、buttonをいくつかのイベントに応答させる必要があります.MouseEventのMouseClickedメソッドなど、特定のlistenerを登録する必要があります.このときaddメソッドが必要です.
3.Listener:具体的なリスニングを行うイベントクラスは、その対応するEventが発生すると、対応するメソッドを呼び出して処理する.Windowsプログラム設計では,この応答はcallbackメカニズムを用いて実現される.
まず、java.util.EventObjectクラスを継承するイベントを定義します.
次に、イベントリスニング管理クラスを定義し、リスニングの追加、削除、起動を実現する
第三に、イベントリスニングインタフェースの定義とjava.util.EventListenerの実装
a.インタフェース
b.実現
最終テスト
実行結果
ServerUpdateEvent[source=HelloWorld]
簡単なjavaカスタムイベントとリスニングの例が実現されます.
1.Event:イベント発生時の具体的な「イベント」であり、Listenerの対応するメソッドに用いられ、パラメータとしてListenerのメソッドに一般的に存在する.
2.EventSource:イベントソース、その役割は主にイベントとリスニングを統一的に管理し、具体的にイベントを受け入れるエンティティ、例えばbuttonをクリックすると、buttonはEventSourceであり、buttonをいくつかのイベントに応答させる必要があります.MouseEventのMouseClickedメソッドなど、特定のlistenerを登録する必要があります.このときaddメソッドが必要です.
3.Listener:具体的なリスニングを行うイベントクラスは、その対応するEventが発生すると、対応するメソッドを呼び出して処理する.Windowsプログラム設計では,この応答はcallbackメカニズムを用いて実現される.
まず、java.util.EventObjectクラスを継承するイベントを定義します.
import java.util.EventObject;
public class ServerUpdateEvent extends EventObject {
private static final long serialVersionUID = 1L;
private Object obj;
public ServerUpdateEvent(Object source) {
super(source);
}
public Object getObj() {
return obj;
}
}
次に、イベントリスニング管理クラスを定義し、リスニングの追加、削除、起動を実現する
import java.util.ArrayList;
import java.util.List;
/**
*
*
* Date 2018 9 6 4:24:06
*
*
*/
public class ServerUpdateEventSource {
private static List listeners = new ArrayList();
public ServerUpdateEventSource() {
}
//
public void addServerUpdateEventListener(ServerUpdateListenerInterface e) {
listeners.add(e);
}
//
public void deleteServerUpdateEventListener(ServerUpdateListenerInterface e) {
listeners.remove(e);
}
//
public void fireServerUpdateEvent(ServerUpdateEvent event) {
for (ServerUpdateListenerInterface listener : listeners) {
listener.handleEvent(event);
}
}
}
第三に、イベントリスニングインタフェースの定義とjava.util.EventListenerの実装
a.インタフェース
import java.util.EventListener;
public interface ServerUpdateListenerInterface extends EventListener {
void handleEvent(ServerUpdateEvent serverUpdateEvent);
}
b.実現
public class ServerUpdateListener implements ServerUpdateListenerInterface {
// ,
protected void doReloadExecutors(ServerUpdateEvent e) {
System.out.println(e);
}
@Override
public void handleEvent(ServerUpdateEvent serverUpdateEvent) {
doReloadExecutors(serverUpdateEvent);
}
}
最終テスト
public class ServerListenerTest {
public static void main(String[] args) {
//
ServerUpdateEventSource eventSource = new ServerUpdateEventSource();
ServerUpdateListener listener = new ServerUpdateListener();
// ,
eventSource.addServerUpdateEventListener(listener);
//
ServerUpdateEvent event = new ServerUpdateEvent("HelloWorld");
// , @Override
eventSource.fireServerUpdateEvent(event);
}
}
実行結果
ServerUpdateEvent[source=HelloWorld]
簡単なjavaカスタムイベントとリスニングの例が実現されます.