java事件机制的参与者:
event object:事件对象,时间产生时具体的“事件”,一般作为listener的方法参数使用。
event source:事件源,接收事件的实体。
event listener:事件监听器类。当有对应的event object产生时,调用相应的方法进行处理。
事件对象:
/** * 事件对象类 * 继承EventObject类 */ public class DoorEvent extends EventObject{ private static final long serialVersionUID = 6734613668785304327L; private String state; public DoorEvent(Object source, String state) { super(source); this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; } }
事件监听器:
/** * 事件监听器接口类 * 继承EventListener接口 */ public interface DoorEventListener extends EventListener{ public void fireEvent(DoorEvent event); }
/** * 开门事件监听器类 */ public class DoorOpenEventListener implements DoorEventListener { @Override public void fireEvent(DoorEvent event) { if("open".equals(event.getState())){ System.out.println("Door opened"); } } }
/** * 关门事件监听器类 */ public class DoorCloseEventListener implements DoorEventListener { @Override public void fireEvent(DoorEvent event) { if("close".equals(event.getState())){ System.out.println("Door closed!"); } } }
事件源:
/** * 事件源类 */ public class DoorManager { private Set<DoorEventListener> listeners = new HashSet<DoorEventListener>(); /** * 注册事件 */ public void addListener(DoorEventListener listener){ listeners.add(listener); } /** * 删除事件 */ public void removeListener(DoorEventListener listener){ listeners.remove(listener); } /** * 通知所有注册的事件 * @param event 事件对象 */ private void notifyListeners(DoorEvent event){ Iterator<DoorEventListener> it = listeners.iterator(); while (it.hasNext()) { DoorEventListener listener = (DoorEventListener) it.next(); listener.fireEvent(event); } } public void openDoor(){ DoorEvent event = new DoorEvent(this, "open"); notifyListeners(event); } public void closeDoor(){ DoorEvent event = new DoorEvent(this, "close"); notifyListeners(event); } public static void main(String[] args) { DoorManager dm = new DoorManager(); dm.addListener(new DoorOpenEventListener()); dm.addListener(new DoorCloseEventListener()); dm.openDoor(); dm.closeDoor(); } }
相关推荐
首先,全书以Java开发环境搭建开篇,循序渐进地介绍了Java语法的方方面面,不仅包括变量、语句、字符串、数组、类、集合、面向对象等必备的基础语法,而且还涵盖异常处理与反射机制、I/O文件操作、线程、数据库操作...
JAVA 范例大全 光盘 资源 书籍目录: 前言. 第1章 开发环境搭建 1 实例1 下载、安装并配置JDK 1 实例2 第一个Java程序 3 实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见...
实例161 垃圾回收的机制 250 第9章 面向对象的四大特征(教学视频:65分钟) 252 9.1 抽象 252 实例162 求自定义几何图形的面积和周长 252 实例163 使用抽象方法实现的支票夹 254 9.2 封装 257 实例164 世界小姐参赛...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
实例161 垃圾回收的机制 250 第9章 面向对象的四大特征(教学视频:65分钟) 252 9.1 抽象 252 实例162 求自定义几何图形的面积和周长 252 实例163 使用抽象方法实现的支票夹 254 9.2 封装 257 实例164 世界小姐参赛...
实例161 垃圾回收的机制 250 第9章 面向对象的四大特征(教学视频:65分钟) 252 9.1 抽象 252 实例162 求自定义几何图形的面积和周长 252 实例163 使用抽象方法实现的支票夹 254 9.2 封装 ...
实例161 垃圾回收的机制 250 第9章 面向对象的四大特征(教学视频:65分钟) 252 9.1 抽象 252 实例162 求自定义几何图形的面积和周长 252 实例163 使用抽象方法实现的支票夹 254 9.2 封装 257 ...
Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
031504_【第15章:Java反射机制】_Java反射机制的深入研究笔记.pdf 031505_【第15章:Java反射机制】_动态代理笔记.pdf 031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...
代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...
第1部分 Java基础程序设计 第1章 Java概述及开发环境搭建 2 视频讲解:35分钟 1.1 认识Java 2 1.1.1 什么是Java 2 1.1.2 Java语言的特点 3 1.1.3 Java程序的运行机制和Java虚拟机 5 1.2 Java开发环境搭建 6 1.2.1 ...
日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...
本模块讨论了事件驱动的图形用户界面(GUI)的用户输入机制。 第一节 相关问题 讨论 - 以下为与本模块内容有关的问题: - 哪些部分对于一个图形用户界面来说是必需的? - 一个图形化程序如何处理鼠标点击或者其他...
主要包括java初体验、eclipse与netbeans、基本语法、控制流程语句、数组、类与对象、字符串、继承与多态、接口与抽象类、集合与异常处理、io流、tcp与udp技术、窗体程序开发、多线程技术、jdbc技术、gui事件处理机制...
本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java网络编 程的基础知识、套接字编程、非阻塞通信、创建HTTP服务器与客户程序、 数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、...