Java 时断时续之————Java事件
1、Java 事件
java中的事件机制的参与者有3种角色:
1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中
2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。
3.event listener:具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。
与jbpm中的 task,event,action 类似
与vb相比,java 的事件机制复杂一些,但功能更强大,也更底层。
事件机制不论表现得多么强大,其本质还是由类属性、方法来完成。
如本例的一个事件源:
- /**
- * 事件源对象,在这里你可以把它想象成一个控制开门关门的遥控器,
- * (如果是在swing中,就类似一个button)
- */
- package test;
- import java.util.*;
- public class DoorManager {
- private Collection listeners;
- /**
- * 添加事件
- * @param listener DoorListener
- */
- public void addDoorListener(DoorListener listener) {
- if (listeners == null) {
- listeners = new HashSet();
- }
- listeners.add(listener);
- }
- /**
- * 移除事件
- * @param listener DoorListener
- */
- public void removeDoorListener(DoorListener listener) {
- if (listeners == null)
- return;
- listeners.remove(listener);
- }
- /**
- * 触发开门事件
- */
- protected void fireWorkspaceOpened() {
- if (listeners == null)
- return;
- DoorEvent event = new DoorEvent(this, "open");
- notifyListeners(event);
- }
- /**
- * 触发关门事件
- */
- protected void fireWorkspaceClosed() {
- if (listeners == null)
- return;
- DoorEvent event = new DoorEvent(this, "close");
- notifyListeners(event);
- }
- /**
- * 通知所有的DoorListener
- */
- private void notifyListeners(DoorEvent event) {
- Iterator iter = listeners.iterator();
- while (iter.hasNext()) {
- DoorListener listener = (DoorListener) iter.next();
- listener.doorEvent(event);
- }
- }
- }
可以看到事件只不过是一个对象DoorEvent event = new DoorEvent(this, "open"); ,只不过DoorEvent一定要继承自EventObject
所谓的事件触发 notifyListeners(event); ,也就是将所有的listerner对象 逐个激发一遍
Iterator iter = listeners.iterator();
- while (iter.hasNext()) {
- DoorListener listener = (DoorListener) iter.next();
- listener.doorEvent(event);
- }
转载于:https://www.cnblogs.com/tidestone/archive/2010/03/04/1678647.html
Java 时断时续之————Java事件相关推荐
- java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件
不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54 答案:3 信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...
- java dispatchevent_dispatchEvent(AWTEvent) 分派事件
点一个按钮,显示的分派一个指定的事件给系统. 下面是一个例子,当点击close按钮时,分派一个new WindowEvent(this,WindowEvent.WINDOW_CLOSING)事件给系统 ...
- java的如何创建js_[Java教程]JS创建事件的三种方式(实例)
[Java教程]JS创建事件的三种方式(实例) 0 2016-05-11 14:00:16 1.普通的定义方式 οnclick="Sfont=prompt('请在文本框中输入红色','红色' ...
- Java Swing中键盘事件的处理
在Java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等.这里就介绍如何定义键盘事件,以及如何处理这些事件. 在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同 ...
- java 实现鼠标移动事件
package com.efiles.test;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; ...
- Java处理敲击键盘事件 Etch-A-Sketch玩具实现 光标画笔画图程序 Java核心技术
Java处理敲击键盘事件 Etch-A-Sketch玩具实现 光标画笔画图程序 Java核心技术 source code: package com.sunnyykn.chapter08; import ...
- java 窗口点击事件
题目: 编写一个JFrame窗口,要求如下: 1. 在窗口的NORTH区放置一个JPanel面板. 2. JPanel面板放置如下组件: (1) JLable标签,标签文本为"兴趣" ...
- Java按钮监听器ActionListener 事件监听教程.
按钮点击产生的效果通过事件监听来实现,下面介绍如何创建一个按钮的监听器, 一.创建监听器 1. 创建一个普通的Frame和然后添加一个按钮,参考教程 2.自制一个MyActionListener 的监 ...
- java关闭事件_为Java程序添加退出事件
package org.swing.os; import java.util.*; import java.io.*; /** * 为Java程序添加退出事件 * * @author wuhq */ ...
最新文章
- let const var 比较说明
- 本地windows上传大文件到Linux服务器工具的选择以及使用方法
- Windows核心编程 第四章 进程(下)
- Python 数据结构之栈的实现
- 公司注销后公章怎么处理,自行保管风险
- 如何用bat批处理编译swf项目
- 在布局空间标注的尺寸量不对_装修公司为什么要量房?量房到底在量什么?又该注意什么?...
- 测试的重要性:蚊子让快递柜的触摸失灵
- Linux-设备驱动概述
- MFC windows程序设计(第三版)课后习题第二章
- vue+elementui 房贷计算器
- php mysql 博客_基于PHP+MySQL的个人博客系统
- c 语言rand()生成随机数
- NVMe1.4 Admin Command学习(1)-- format identify
- 最强蜗牛换了手机找不到服务器,最强蜗牛服务器无响应怎么办 最强蜗牛进不去解决方法...
- 正版Xshell免费使用
- JS中(function(){xxx})(); 这种写法是什么意思?
- 用python写情书_用Python给喜欢人的发一封邮件吧(群发)
- /proc/cpuinfo 文件详解
- TOJ 4354 HDU 4262 Juggler / 树状数组
热门文章
- eclipse添加注释模板
- Python深入06 Python的内存管理
- Silverlight 视频学习札记(一)
- 三种方式实现轮播图功能
- html图片上加水印,css给图片添加水印
- python random.random 缩短小数点儿后位数_Python random模块制作简易的四位数验证码...
- raspberry pi_前5名:替代密码,Raspberry Pi进入太空等等
- 微信小程序网络通信(一)
- ES6 ArrayBuffer 概述
- python2048小游戏程序设计大作业_C语言大作业报告——2048小游戏程序