一文学会Java事件机制

Java33

相信做 Java 开发的朋友,大多都是学习过或至少了解过 Java GUI 编程的,其中有大量的事件和控件的绑定,当我们需要在点击某个按钮实现某些操作的时候,其实就是为这个按钮控件注册了一个合理处理点击事件的监听器。此外,Spring Framework 中也有许多用到事件处理机制的地方,如 ApplicationContextEvent 及其子类,代表着容器的启动、停止、关闭、刷新等事件。本文会为大家介绍 Java 的事件处理机制,也会用示例来说明,如何优雅地触发并处理一个自定义事件。

Java 自 1.1 之后基于委托事件模型,定义了标准一致的获取和处理事件的方式。它的思路非常简单,由事件源发起特定事件,并将事件发送给一个或多个事件监听器,而监听器在此过程中一直处于等待状态,直到接收到该事件,然后处理事件并返回。实现起来也很简单:

  • 定义事件
  • 实现特定的监听器接口,接收特定类型的事件
  • 实现代码,注册(或解除)监听器作为特定事件类型的接收者
  • 在恰当的时机触发事件

在 Java 的这个事件处理机制中,包含三个核心组件:

那么问题来了,我们如何优雅地触发并处理一个自定义事件呢?

在 Java 中自定义事件非常简单。考虑到现在各个应用中都有绑定社交账号的需求,我们就以此为例,在社交账号绑定或者解绑时简单的打印一条记录。

首先定义一个事件对象,代码如下:

```java
public class SocialEvent extends EventObject {
private static final long serialVersionUID = -5473622737706032666L;

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

Java 面试题集锦

第一阶段 1、重载(overload)和重写(overwrite)区别 重写:子类继承父类,子类重写父类的方法。 重载: 2、StringBuffer、StringBuilder、String 区别 ...
Java

SpringMVC(3)-RestFul风格

一.概念:Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 二.功能: 1.资源:互联网所有的事物都...
Java

Java 线程创建与常用方法

进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO...
Java

MySQL索引凭什么能让查询效率提高这么多?

我相信大家在数据库优化的时候都会说到索引,我也不例外,大家也基本上能对数据结构的优化回答个一二三,以及页缓存之类的都能扯上几句,但是有一次阿里P9的一个面试问我:你能从计算机层面开始说一下一个索引数据...
Java

IDEA使用Gittee提交代码

今天给大家分享一下如何从idea提交代码到gitee上面。 1.先在gitee上创建仓库 2.填写相应的信息 3.下载git 直接next一站式安装 4.鼠标右键点击 Git Bash Here, 通...
Java

Metro 界面设计案例

Metro是微软的一贯设计风格,相对Google的Material Desgin ,Metro更加的简洁,清晰明了。 Material 的设计也是很不错的,而且在Android,Web上都能经常看到M...
Java

nacos 快速入门

外表可是具有欺骗性的。 No victory comes without a price. 凡是成功就要付出代价。 这个快速开始手册是帮忙您快速在您的电脑上,下载、安装并使用 nacos。 Nacos...
Java

【每日算法】二分查找法

模板 例题 367. 有效的完全平方数 描述 示例1 示例2 提示 思路 代码 69.x的平方根 描述 示例1 示例2 提示 代码 模板 ``` left,right=1,n
Java

设计模式之解释器模式

解释器模式字面意思,也即解释某些内容的含义。这种设计模式是实际开发中最不容易用到的。比如SQL解析,符号处理引擎,会用到解释器模式,属于更底层的开发人员才会用到的设计模式。 本文通过解释器模式的概念、...