`
enjiex
  • 浏览: 67912 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java事件监听器

阅读更多
      事件监听器机制是观察者模式的一种,通过把事件源和事件处理流程以监听器的方法隔离开来,减小了主流程与被触发事件的执行流程间的耦合,便于代码的维护和对事件处理流程的扩展。
      在事件监听机制中,涉及到三个角色:事件、发布者和监听器
      事件:在事件源和事件监听器之间传递信息的对象实体。
      发布者:在事件发生后,负责把事件发布到监听者的对象。
      监听者:监听事件,并进行事件处理或转发的对象。
      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语言中的一种机制,它允许程序员在特定的事件发生时执行某些操作。事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件...

    java事件监听方法和代码

    Java事件监听器即一组动作接口。如键盘事件KeyEvent对应的接口是: public interface KeyListener extends EventListener { public void keyPressed(KeyEvent ev); public void keyReleased(KeyEvent ev); public ...

    java监听器的实现和原理详解

    Java监听器的实现可以分为三个部分:事件源、事件对象和事件监听器。事件源是指产生事件的对象,例如按钮、文本框等。事件对象是指事件的载体,用于传递事件信息。事件监听器是指负责处理事件的对象,例如点击按钮时...

    java 监听器练习

    ### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理事件的机制。当某个特定类型的事件发生时,监听器会执行相应的操作。这种机制广泛应用于图形用户界面(GUI)编程中,使得...

    Java设计模式之监听器模式实例详解

    监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...

    Java事件处理机制- 事件监听器的四种实现方式

    本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 1. **自身类作为事件监听器** 在自身类作为事件...

    java一个监听器的例子

    在Java编程中,监听器...在提供的压缩包文件“05_监听器”中,可能包含更多关于Java监听器的实例代码和讲解,可以帮助深入理解这一主题。建议查看这些文件,动手实践并调试代码,以便更好地掌握Java监听器的使用。

    Java Swing 常用事件和监听器接口

    Java Swing 常用事件和监听器接口 Java Swing 是一个功能强大的图形用户界面(GUI)工具包,它提供了许多事件和监听器接口,帮助开发者更好地处理用户交互。下面是 Java Swing 中常用的事件和监听器接口。 1. ...

    java自定义事件监听

    此外,Java还提供了事件适配器类(Adapter classes),如ActionAdapter,它们为监听器接口提供了空实现。适配器类可以作为基类,让我们只需覆盖感兴趣的方法,而不是实现所有方法,从而简化代码。 总结起来,Java...

    java GUI 事件监听

    本文介绍了Java GUI编程的基础知识,包括创建窗口、添加组件、实现事件监听器等内容。通过这个示例,我们可以看到如何构建一个具有简单功能的GUI应用。对于初学者来说,掌握这些基础知识对于进一步学习高级GUI技术至...

    Java事件处理机制-事件监听器的四种实现方式.docx

    本文将详细介绍Java中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 #### 一、自身类作为事件监听器 自身类作为事件监听器是最...

    java监听器练习

    ### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理特定事件的对象。当某个事件发生时(如按钮点击、键盘输入等),监听器将被调用来执行相应的操作。Java中的监听器机制是基于...

    JAVA USB监听器

    【JAVA USB监听器】是一种基于Java编程语言实现的软件工具,其主要功能是对USB设备进行实时监控,当USB设备插入时,能够自动检测并复制指定类型的文件到预先设定的目录中。这种工具对于需要频繁从USB设备中获取特定...

    JAVA SESSION监听器

    Java Session监听器是Java Servlet规范中提供的一种机制,用于对HttpSession对象的生命周期事件进行监听和处理。在Web应用程序中,Session是用来跟踪用户状态的重要工具,特别是在无状态的HTTP协议上。当用户登录后...

    自己编写一个Java监听器

     2.1Java的时间监听机制涉及到三个组件:事件源、事件监听器、事件对象  2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来  2.3事件监听器是由开

    Java添加事件监听的四种方法代码实例

    这允许在不创建单独的类的情况下为组件添加事件监听器: ```java // 在类的构造方法中 btBlue.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 处理事件 ...

    Java的监听器种类

    下面将详细介绍几种常见的Java监听器。 #### Servlet上下文监听器(Application级) 在Servlet容器中,`ServletContext`对象代表了整个Web应用的上下文环境,它是全局唯一的。为了监控`ServletContext`生命周期内...

    java监听器

    这篇博客“java监听器”可能详细解释了如何在Java中使用监听器以及它们在实际项目中的应用。 首先,我们来理解什么是Java监听器。在Java Swing或JavaFX等GUI库中,监听器是接口,实现了这些接口的类可以“监听”...

    Java监听键盘鼠标全局事件[定义].pdf

    Java监听键盘鼠标全局事件广泛应用于游戏开发、自动化测试、屏幕阅读器等领域。该技术可以帮助开发者快速实现复杂的交互功能,以提高用户体验。 九、Java监听键盘鼠标全局事件的优点 Java监听键盘鼠标全局事件的...

Global site tag (gtag.js) - Google Analytics