什么是java.util.EventListener?

问题描述 投票:0回答:2

我找不到这个问题的答案。什么是java.util.EventListener?它是如何工作的?我已经在Google上进行了一些研究,但我只发现了这一点,这不是很清楚:所有事件侦听器接口都必须扩展的标记接口。

有人可以帮忙吗?

java event-listener
2个回答
0
投票

侦听器是一个类,包含的方法比发生某些操作时要调用的方法多。

[java.util.EventListener是所有侦听器都应实现的标记接口(没有任何方法的接口)。]

实际上,它甚至没有增加任何功能。

因此,如果要创建自己的自定义事件(由您触发),则需要在事件发生时以某种方式调用所有侦听器方法。

例如,您可以执行以下操作:

首先,为您的侦听器创建一个扩展EventListener的接口:

public interface MyListener extends EventListener{
    void onEvent();
}

然后,您将需要创建一种机制来注册和调用所有事件:

private Collection<MyListener> listeners=new HashSet<>();
public void register(MyListener listener){
    listeners.add(listener);
}
public void eventHappens(){
    for(MyListener listener:listeners){
        listener.onEvent();
    }
}

然后,您可以使用以下方式注册侦听器:>

public class MyListenerImpl{
    private String msg;
    public MyListenerImpl(String data){
        this.data=data;
    }
    @Override
    public void onEvent(){
        System.out.println(msg);
    }
}

您可以使用]进行注册>

register(new MyListenerImpl("Event occurs"));

每当调用eventHappens()时(如果您收到网络数据包,就可以调用它),所有注册的侦听器都将被执行。

例如:

register(new MyListenerImpl("listener 1 called"));
register(new MyListenerImpl("listener 2 called"));
System.out.println("calling event");
eventHappens();

将打印

通话事件

被称为听众1

听了第二个听众的声音

您似乎已经发现,第一个Google匹配是the EventListener documentation

看到页面顶部的蓝色导航栏?第四个词是“使用”链接。转到该位置。

EventListener提供类型安全的多态性。例如,java.awt.Component有一个getListeners method,它需要EventListener的子类。

EventListener实际上是该规范第6.4节中的Java Beans specification.的一部分:

由于新的Java事件模型基于方法调用,因此我们需要一种定义和分组事件处理方法的方法。我们要求在从[[java.util.EventListener。

继承的EventListener接口中定义事件处理方法,按照约定,这些EventListener接口的名称以“ Listener”结尾。想要处理给定

EventListener

接口中定义的任何事件集的类都应实现该接口。

0
投票

您似乎已经发现,第一个Google匹配是the EventListener documentation

看到页面顶部的蓝色导航栏?第四个词是“使用”链接。转到该位置。

© www.soinside.com 2019 - 2024. All rights reserved.