事件监听机制(一)Java事件监听

事件监听实现流程

  1. 事件对象:
    继承自java.util.EventObject对象,由开发者自行定义实现。

  2. 事件源:
    就是触发事件的源头,不同的事件源会触发不同的事件类型。

  3. 事件监听器:
    事件监听器负责监听事件源发出的事件,事件监听器可以通过实现java.util.EventListener这个标识接口.,实现事件监听。

流程总结

事件源可以注册事件监听器对象,并可以向事件监听器对象发送事件对象,事件发生后,事件源将事件对象发给已经注册的所有事件监听器,监听器对象随后会根据事件对象内的相应方法响应这个事件。

自定义实现事件监听

自定义事件监听对象

/*** @ClassName: Event* @Description: 事件监听源* @Author: 尚先生* @CreateDate: 2019/2/25 9:31* @Version: 1.0*/
public class Event {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Event{" +"name='" + name + '\'' +'}';}
}

自定义事件源

/*** @ClassName: EventSourceDemo* @Description: 自定义事件源* @Author: 尚先生* @CreateDate: 2019/2/25 9:11* @Version: 1.0*/
public class EventSourceDemo {private LinkedBlockingQueue<EventListenerDemo> queue = new LinkedBlockingQueue<>();public EventSourceDemo() {super();}public void addMyEventListener(EventListenerDemo eventListener) {queue.offer(eventListener);}public void deleteMyEventListener(EventListenerDemo eventListener) {queue.remove(eventListener);}public void notifyMyEvent(EventObjectDemo eventObject) {Iterator<EventListenerDemo> iterator = queue.iterator();while (iterator.hasNext()) {//在类中实例化自定义的监听器对象,并调用监听器方法iterator.next().execute(eventObject);}}
}

自定义事件

/*** @ClassName: EventObjectDemo* @Description: 自定义事件* @Author: 尚先生* @CreateDate: 2019/2/25 8:53* @Version: 1.0*/
public class EventObjectDemo extends EventObject {/*** Constructs a prototypical Event.** @param source The object on which the Event initially occurred.* @throws IllegalArgumentException if source is null.*/public EventObjectDemo(Object source) {super(source);}
}

自定义监听器

/*** @ClassName: EventListenerDemo* @Description: 自定义监听器* @Author: 尚先生* @CreateDate: 2019/2/25 8:53* @Version: 1.0*/
public class EventListenerDemo implements EventListener {/*** 执行监听器* @param eventObject*/public void execute(EventObjectDemo eventObject){System.err.println(eventObject.getSource());}
}

测试类

public class EventTest {public static void main(String args[]) {// 创建 eventListenerEventListenerDemo eventListener = new EventListenerDemo();// 创建 eventSourceEventSourceDemo eventSource = new EventSourceDemo();// 添加 eventListenereventSource.addMyEventListener(eventListener);// 创建事件源Event event = new Event();event.setName("event");EventObjectDemo eventObjectDemo = new EventObjectDemo(event);// 事件通知eventSource.notifyMyEvent(eventObjectDemo);}
}

测试结果

Event{name='event'}

往期文章

博客地址:https://blog.csdn.net/shang_xs
微信公众号地址:http://mp.weixin.qq.com/mp/homepage?__biz=MzUxMzk4MDc1OQ==&hid=2&sn=c6c58c06f6f8403af27b6743648b3055&scene=18#wechat_redirect

完整代码及详情

具体依赖及相关源码参照

https://github.com/dwyanewede/project-learn/tree/master/src/main/java/com/learn/demo/java/base/event

更多文章

事件监听机制(一)Java事件监听
https://blog.csdn.net/shang_xs/article/details/87911756
事件监听机制(二)Spring事件监听
https://blog.csdn.net/shang_xs/article/details/88048545
事件监听机制(三)Spring Cloud Bus流程分析
https://blog.csdn.net/shang_xs/article/details/88050196
事件监听机制(四)从Java事件监听到Spring事件监听
https://blog.csdn.net/shang_xs/article/details/86560994
事件监听机制(五)再话Jdk事件监听到Spring框架事件监听
https://blog.csdn.net/shang_xs/article/details/119794917

事件监听机制(一)Java事件监听相关推荐

  1. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  2. Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析

    文章目录 Pre 实现原理 应用 配置类 Event事件 事件监听 EventListener 发布事件 publishEvent 源码解析 (反推) Spring默认的事件广播器 SimpleApp ...

  3. java 事件通知_正确获取Java事件通知

    java 事件通知 实现观察者模式以提供Java事件通知似乎是一件容易的事. 但是,容易陷入一些陷阱. 这是我在各种场合不慎造成的常见错误的解释-- Java事件通知 让我们从一个简单的bean St ...

  4. Java中事件监听机制

    Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...

  5. java监听机制_详解java的事件监听机制和观察者设计模式

    首先说说监听器: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执 行. java的事件监 ...

  6. java事件监听机制pdf,事件监听机制(转)

    事件监听机制在java编程中有很重要的应用,一般我们在处理GUI编程时,只是重写一下监听接口的perform函数即可.但事件监听在底层是如何运行的?通过下面的例子我们可以有个清楚地了解. 1.     ...

  7. Spring5源码 - 11 Spring事件监听机制_源码篇

    文章目录 pre 事件监听机制的实现原理[观察者模式] 事件 ApplicationEvent 事件监听者 ApplicationEvent 事件发布者 ApplicationEventMultica ...

  8. Apache ZooKeeper - 事件监听机制详解

    文章目录 事件监听机制命令 Zookeeper事件类型 实操 -w get -w /path 监听节点数据的变化 ls -w /path 监听子节点的变化(增,删) [监听目录] ls -w /pat ...

  9. Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析

    文章目录 Pre 概览 开天辟地的时候初始化的处理器 @EventListener EventListenerMethodProcessor afterSingletonsInstantiated 小 ...

  10. JavaScript学习笔记(五)---cookie、Proxy、服务器、PHP语言、http协议、同步异步、事件轮循机制、ajax编写、接口

    JavaScript学习笔记(五)---cookie.Proxy.服务器.PHP语言.http协议.同步异步.事件轮循机制.ajax编写.接口 1.cookie 1.1cookie概念 1.2cook ...

最新文章

  1. 数据库:数据库优化(一)
  2. 如何让局部变量具有全局生命期
  3. 增强画面纵深感的几个小技巧
  4. cnn_mnist_案例详解
  5. python学习:语句
  6. mysql 多张表公用一个序列_Mysql--序列3--分库分表策略
  7. 探索篇 | 接口字段容错测试(三)
  8. cadence 16.6中Z-copy的用法
  9. spring整合shiro
  10. 自动测试容易失败?这5个原因你值得反思!
  11. JAVA中Long与Integer
  12. 抽象工厂模式---创建型
  13. easyui及eova下select:option、find无法直接取值的解决办法
  14. pdf照片显示正常打印时被翻转_要哭了,差点打印不了准考证!(2021考生提前收藏!)...
  15. javascript 百度百科
  16. manjaro搭建java_Manjaro配置JDK
  17. Android 利用摄像头指尖测试心率
  18. 电脑上有office,但不能新建word文档怎么办?
  19. QQ也出网页版的了- WebQQ公测中
  20. ParameterResolutionException单元测试方法中添加了参数,这是不允许的

热门文章

  1. 安卓 每日一题 2020年5-6月问题及答案
  2. 高级计算机应用a,A东师计算机应用基础15春在线作业.doc
  3. 采用GlodWave软件制作个性化铃声
  4. 两个电脑主机共用一个显示器
  5. JS控制字体大小中、设为首页、收藏本站功能、超链接去掉颜色
  6. Backtrack5 搭建Nessus
  7. 可汗学院金融学(一)
  8. 大端与小端字节数据详解
  9. 关于dva的put,put.resolve
  10. 百度地图实现自定义搜索