事件监听器机制是观察者模式的一种,通过把事件源和事件处理流程以监听器的方法隔离开来,减小了主流程与被触发事件的执行流程间的耦合,便于代码的维护和对事件处理流程的扩展。
在事件监听机制中,涉及到三个角色:事件、发布者和监听器
事件:在事件源和事件监听器之间传递信息的对象实体。
发布者:在事件发生后,负责把事件发布到监听者的对象。
监听者:监听事件,并进行事件处理或转发的对象。
Java中提供了事件监听器实现的框架,使用Java中的事件监听器,需要熟悉以下几个类或接口:
1. EventObject:事件的基类,在Java中自定义事件时需要继承的基类,其定义了事件源——Object类型的属性,可以把发生事件所在的类实例的引用传递过来,以便于在事件处理流程中使用(如果有使用要求的话)。在自定义的事件中,还可以定义自己应用所需的其他属性。
2. EventListener:自定义事件监听器必须实现的接口,没有具体方法,只起到标识作用。
Java事件的简单实现如下(代码参考Spring揭秘中自定义事件):
1. 定义事件:
package com.nuc.event;
import java.util.EventObject;
/**
* 定义事件对象,在该事件中除了继承自父类EventObject的source属性外,还自定义了
* 其他的一些属性
*/
public class MethodExecutionEvent extends EventObject {
private static final long serialVersionUID = -641456338528520034L;
private String methodName;
private MethodExecutionStatus methodExecutionStatus;
public MethodExecutionEvent(Object source) {
super(source);
}
public MethodExecutionEvent(Object source, String methodName, MethodExecutionStatus methodExecutionStatus) {
super(source);
this.methodName = methodName;
this.methodExecutionStatus = methodExecutionStatus;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public MethodExecutionStatus getMethodExecutionStatus() {
return methodExecutionStatus;
}
public void setMethodExecutionStatus(MethodExecutionStatus methodExecutionStatus) {
this.methodExecutionStatus = methodExecutionStatus;
}
}
2. 定义监听器接口及其实现
监听器接口:
package com.nuc.listener;
import java.util.EventListener;
import java.util.EventObject;
public interface MethodExecutionEventListener extends EventListener {
void onMethodExecute(EventObject event);
}
监听器实现:
package com.nuc.listener;
import java.util.EventObject;
import com.nuc.event.MethodExecutionEvent;
import com.nuc.event.MethodExecutionStatus;
/**
* 事件监听器,定义当事件发生时会触发的动作。但这里的事件处理流程并不会被
* 事件源所在执行流程直接调用,而通过第三者——发布者把事件传递过来
*/
public class MethodExecutionEventListenerImpl implements
MethodExecutionEventListener {
public void onMethodExecute(EventObject event) {
if (event instanceof MethodExecutionEvent) {
if (MethodExecutionStatus.BEGIN.equals(((MethodExecutionEvent)event).getMethodExecutionStatus())) {
System.out.println("invoke start...");
}
if (MethodExecutionStatus.END.equals(((MethodExecutionEvent) event).getMethodExecutionStatus())) {
System.out.println("method end...");
}
}
}
}
3. 定义发布者
package com.nuc.publisher;
import java.util.EventObject;
import com.nuc.listener.MethodExecutionEventListener;
import com.nuc.listener.MethodExecutionEventListenerImpl;
/**
* 对事件触发流程和事件执行流程进行解耦的重要组件,负责把把事件发布到监听器里。
* 所谓的发布即是把事件传递给监听器。
*/
public class EventPublisher {
private MethodExecutionEventListener listener = new MethodExecutionEventListenerImpl();
public void publishEvent(EventObject event) {
listener.onMethodExecute(event);
}
}
4. 主流程发布事件:
package com.nuc;
import com.nuc.event.MethodExecutionEvent;
import com.nuc.event.MethodExecutionStatus;
import com.nuc.publisher.EventPublisher;
public class App
{
public static void main( String[] args )
{
new EventPublisher().publishEvent(new MethodExecutionEvent("ok", "main", MethodExecutionStatus.BEGIN));
new EventPublisher().publishEvent(new MethodExecutionEvent("ok", "main", MethodExecutionStatus.END));
}
}
上面只是java事件监听器的最简单的实现,在实际应用中还需要根据需要,定义适合的EventObject及处理流程。
分享到:
相关推荐
JAVA事件监听器的四种实现方式 JAVA事件监听器是JAVA语言中的一种机制,它允许程序员在特定的事件发生时执行某些操作。事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件...
Java事件监听器即一组动作接口。如键盘事件KeyEvent对应的接口是: public interface KeyListener extends EventListener { public void keyPressed(KeyEvent ev); public void keyReleased(KeyEvent ev); public ...
Java监听器的实现可以分为三个部分:事件源、事件对象和事件监听器。事件源是指产生事件的对象,例如按钮、文本框等。事件对象是指事件的载体,用于传递事件信息。事件监听器是指负责处理事件的对象,例如点击按钮时...
### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理事件的机制。当某个特定类型的事件发生时,监听器会执行相应的操作。这种机制广泛应用于图形用户界面(GUI)编程中,使得...
监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...
本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 1. **自身类作为事件监听器** 在自身类作为事件...
在Java编程中,监听器...在提供的压缩包文件“05_监听器”中,可能包含更多关于Java监听器的实例代码和讲解,可以帮助深入理解这一主题。建议查看这些文件,动手实践并调试代码,以便更好地掌握Java监听器的使用。
Java Swing 常用事件和监听器接口 Java Swing 是一个功能强大的图形用户界面(GUI)工具包,它提供了许多事件和监听器接口,帮助开发者更好地处理用户交互。下面是 Java Swing 中常用的事件和监听器接口。 1. ...
此外,Java还提供了事件适配器类(Adapter classes),如ActionAdapter,它们为监听器接口提供了空实现。适配器类可以作为基类,让我们只需覆盖感兴趣的方法,而不是实现所有方法,从而简化代码。 总结起来,Java...
本文介绍了Java GUI编程的基础知识,包括创建窗口、添加组件、实现事件监听器等内容。通过这个示例,我们可以看到如何构建一个具有简单功能的GUI应用。对于初学者来说,掌握这些基础知识对于进一步学习高级GUI技术至...
本文将详细介绍Java中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 #### 一、自身类作为事件监听器 自身类作为事件监听器是最...
### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理特定事件的对象。当某个事件发生时(如按钮点击、键盘输入等),监听器将被调用来执行相应的操作。Java中的监听器机制是基于...
【JAVA USB监听器】是一种基于Java编程语言实现的软件工具,其主要功能是对USB设备进行实时监控,当USB设备插入时,能够自动检测并复制指定类型的文件到预先设定的目录中。这种工具对于需要频繁从USB设备中获取特定...
Java Session监听器是Java Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...
2.1Java的时间监听机制涉及到三个组件:事件源、事件监听器、事件对象 2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来 2.3事件监听器是由开
这允许在不创建单独的类的情况下为组件添加事件监听器: ```java // 在类的构造方法中 btBlue.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 处理事件 ...
下面将详细介绍几种常见的Java监听器。 #### Servlet上下文监听器(Application级) 在Servlet容器中,`ServletContext`对象代表了整个Web应用的上下文环境,它是全局唯一的。为了监控`ServletContext`生命周期内...
这篇博客“java监听器”可能详细解释了如何在Java中使用监听器以及它们在实际项目中的应用。 首先,我们来理解什么是Java监听器。在Java Swing或JavaFX等GUI库中,监听器是接口,实现了这些接口的类可以“监听”...
Java监听键盘鼠标全局事件广泛应用于游戏开发、自动化测试、屏幕阅读器等领域。该技术可以帮助开发者快速实现复杂的交互功能,以提高用户体验。 九、Java监听键盘鼠标全局事件的优点 Java监听键盘鼠标全局事件的...