首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中的事件侦听器

Java中的事件侦听器
EN

Stack Overflow用户
提问于 2012-12-21 21:08:26
回答 5查看 12.5K关注 0票数 9

我一直在使用AS3中的事件侦听器,但在java中似乎没有事件侦听器(除了图形组件)。这很令人惊讶。

问题是,我如何在java中实现我自己的事件侦听器?也许以前有人做过这件事?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-21 21:11:58

您可以定义监听程序接口:

代码语言:javascript
运行
复制
public interface EventListener {
    void fireEvent (Event e);
}

然后在你的代码中:

代码语言:javascript
运行
复制
EventListener lst = new EventListener() {
    @Override
    public void fireEvent (Event e) {
        //do what you want with e
    }
}

someObject.setListener(lst);
someObject.somethingHappened();

然后在someObject中(实际上,您可能会保存一个监听器列表):

代码语言:javascript
运行
复制
public class SomeObject {
    private EventListener lst;

    public void setListener (EventListener lst) {
        this.lst = lst;
    }

    public void somethingHappened () {
        lst.fireEvent(new Event("Something Happened"));
    }
}
票数 14
EN

Stack Overflow用户

发布于 2012-12-21 21:17:26

您可以将PropertyChangeSupportPropertyChangeListener一起使用,也可以使用观察者模式。

票数 4
EN

Stack Overflow用户

发布于 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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13990798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档