[英]Event Listeners in Java
我一直在使用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"));
}
}
您可以將PropertyChangeSupport與PropertyChangeListener一起使用,也可以使用Observer模式。
首先,您需要一些事件源,因此您可以將監聽器附加到它上面。 如果您需要自定義偵聽器,則還需要實現自定義源。
在Java中,您可以找到現有的源和listener
接口。 正如您所提到的,GUI通常基於事件。 如果你是3D,那么渲染引擎提供適當的API(例如collision detection
),文件系統掛鈎,屬性改變監聽器( Android
)。
這取決於你的需求。 對於大多數用途,應該已經有一個庫,可以為您提供適當的API。
在實施自己的解決方案時,為了應用程序范圍的事件處理,事件總線可能是一個不錯的選擇 我首選的實現是在Guava庫中: http : //code.google.com/p/guava-libraries/wiki/EventBusExplained
您可以在Java中為要觀察的對象擴展Observable類實現一種偵聽器,並在偵聽器上實現Observer 。
您不需要框架或Observer類。 它自1995年版本1.0以來都內置於Java Beans規范中。它應該是Java對VB屬性的回答。
這是一個教程:
http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.