簡體   English   中英

Java中的事件監聽器

[英]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"));
    }
}

您可以將PropertyChangeSupportPropertyChangeListener一起使用,也可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM