我一直在使用AS3中的事件侦听器,但在java中似乎没有事件侦听器(除了图形组件)。这很令人惊讶。
问题是,我如何在java中实现我自己的事件侦听器?也许以前有人做过这件事?
发布于 2012-12-21 21:11:58
您可以定义监听程序接口:
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"));
}
}发布于 2012-12-21 21:17:26
您可以将PropertyChangeSupport与PropertyChangeListener一起使用,也可以使用观察者模式。
发布于 2012-12-21 21:13:08
首先,您需要一些事件源,以便您可以将侦听器附加到它。如果您需要自定义侦听器,那么您还需要实现自定义源。
在Java语言中,您可以找到现有的源代码和listener接口。正如您提到的,GUI通常是基于事件的。如果你是3D用户,那么渲染引擎会提供合适的API (例如,collision detection)、文件系统挂钩、属性更改侦听器(Android)。
这取决于你的需求。对于大多数应用,应该已经有了一个为您提供适当API的库。
在实现您自己的解决方案时,对于应用程序范围的事件处理,事件总线可能是一个很好的选择。我的首选实现是在Guava库中:http://code.google.com/p/guava-libraries/wiki/EventBusExplained
https://stackoverflow.com/questions/13990798
复制相似问题