스윙 앱의 표준 솔루션 종류는 이벤트가 발생한 클래스의 이벤트 리스너 목록을 유지 관리하는 것입니다. 이벤트가 발생하면 목록을 반복하고 각 청취자에게 이벤트를 알립니다. 그래서 이런 식으로 뭔가 할 수있다 (필자는 액세스 한정자를 생략하고 간결에 대한 형식 선언의 일부) :
class SomeClassInWhichTheEventOccurs {
List<MyListener> listeners;
void addListener(listener) { listeners.add(listener); }
void removeListener(listener) { listeners.remove(listener); }
void fireEvent(someEventParameters) {
foreach (listener in listeners) listener.eventOccured();
}
void someMethodInWhichTheEventOccurs() {
...
fireEvent(someEventParameters);
}
}
이벤트 매개 변수는 무엇이든 할 수있다 : 당신은 당신의 자신의 이벤트 클래스, 재사용 java.awt의를 만들 수 있습니다 .Event 또는 임의의 유형의 일부 매개 변수를 전달하십시오.
+1 그리고 자신의 이벤트를 조심하십시오. 가능한 경우 다른 Java 라이브러리에서 가능한 한 자세히 수행하십시오. 무언가가 Serializable 일 때, 해당 객체를 Serializable 등으로 만드십시오. 가능한 모든 곳에서 동일한 명명 패턴과 메소드를 사용하십시오. 손으로 뽑은 사건을 다루는 것은 상황에 따라 불쾌 할 수 있습니다. –