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 的事件机制复杂一些,但功能更强大,也更底层。

事件机制不论表现得多么强大,其本质还是由类属性、方法来完成。

如本例的一个事件源:

  1. /**
  2. * 事件源对象,在这里你可以把它想象成一个控制开门关门的遥控器,
  3. * (如果是在swing中,就类似一个button)
  4. */
  5. package test;
  6. import java.util.*;
  7. public class DoorManager {
  8. private Collection listeners;
  9. /**
  10. * 添加事件
  11. * @param listener DoorListener
  12. */
  13. public void addDoorListener(DoorListener listener) {
  14. if (listeners == null) {
  15. listeners = new HashSet();
  16. }
  17. listeners.add(listener);
  18. }
  19. /**
  20. * 移除事件
  21. * @param listener DoorListener
  22. */
  23. public void removeDoorListener(DoorListener listener) {
  24. if (listeners == null)
  25. return;
  26. listeners.remove(listener);
  27. }
  28. /**
  29. * 触发开门事件
  30. */
  31. protected void fireWorkspaceOpened() {
  32. if (listeners == null)
  33. return;
  34. DoorEvent event = new DoorEvent(this, "open");
  35. notifyListeners(event);
  36. }
  37. /**
  38. * 触发关门事件
  39. */
  40. protected void fireWorkspaceClosed() {
  41. if (listeners == null)
  42. return;
  43. DoorEvent event = new DoorEvent(this, "close");
  44. notifyListeners(event);
  45. }
  46. /**
  47. * 通知所有的DoorListener
  48. */
  49. private void notifyListeners(DoorEvent event) {
  50. Iterator iter = listeners.iterator();
  51. while (iter.hasNext()) {
  52. DoorListener listener = (DoorListener) iter.next();
  53. listener.doorEvent(event);
  54. }
  55. }
  56. }

可以看到事件只不过是一个对象DoorEvent event = new DoorEvent(this, "open");    ,只不过DoorEvent一定要继承自EventObject

所谓的事件触发        notifyListeners(event);   ,也就是将所有的listerner对象 逐个激发一遍

Iterator iter = listeners.iterator();

  1. while (iter.hasNext()) {
  2. DoorListener listener = (DoorListener) iter.next();
  3. listener.doorEvent(event);
  4. }

转载于:https://www.cnblogs.com/tidestone/archive/2010/03/04/1678647.html

Java 时断时续之————Java事件相关推荐

  1. java 鼠标单击_不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件

    不通过鼠标点击,单纯的通过Java代码生成鼠标单击事件 关注:54  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-13 04:21 提问者少走感情路 2021-01-12 08:3 ...

  2. java dispatchevent_dispatchEvent(AWTEvent) 分派事件

    点一个按钮,显示的分派一个指定的事件给系统. 下面是一个例子,当点击close按钮时,分派一个new WindowEvent(this,WindowEvent.WINDOW_CLOSING)事件给系统 ...

  3. java的如何创建js_[Java教程]JS创建事件的三种方式(实例)

    [Java教程]JS创建事件的三种方式(实例) 0 2016-05-11 14:00:16 1.普通的定义方式 οnclick="Sfont=prompt('请在文本框中输入红色','红色' ...

  4. Java Swing中键盘事件的处理

    在Java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等.这里就介绍如何定义键盘事件,以及如何处理这些事件. 在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同 ...

  5. java 实现鼠标移动事件

    package com.efiles.test;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; ...

  6. Java处理敲击键盘事件 Etch-A-Sketch玩具实现 光标画笔画图程序 Java核心技术

    Java处理敲击键盘事件 Etch-A-Sketch玩具实现 光标画笔画图程序 Java核心技术 source code: package com.sunnyykn.chapter08; import ...

  7. java 窗口点击事件

    题目: 编写一个JFrame窗口,要求如下: 1. 在窗口的NORTH区放置一个JPanel面板. 2. JPanel面板放置如下组件: (1) JLable标签,标签文本为"兴趣" ...

  8. Java按钮监听器ActionListener 事件监听教程.

    按钮点击产生的效果通过事件监听来实现,下面介绍如何创建一个按钮的监听器, 一.创建监听器 1. 创建一个普通的Frame和然后添加一个按钮,参考教程 2.自制一个MyActionListener 的监 ...

  9. java关闭事件_为Java程序添加退出事件

    package org.swing.os; import java.util.*; import java.io.*; /** * 为Java程序添加退出事件 * * @author wuhq */ ...

最新文章

  1. let const var 比较说明
  2. 本地windows上传大文件到Linux服务器工具的选择以及使用方法
  3. Windows核心编程 第四章 进程(下)
  4. Python 数据结构之栈的实现
  5. 公司注销后公章怎么处理,自行保管风险
  6. 如何用bat批处理编译swf项目
  7. 在布局空间标注的尺寸量不对_装修公司为什么要量房?量房到底在量什么?又该注意什么?...
  8. 测试的重要性:蚊子让快递柜的触摸失灵
  9. Linux-设备驱动概述
  10. MFC windows程序设计(第三版)课后习题第二章
  11. vue+elementui 房贷计算器
  12. php mysql 博客_基于PHP+MySQL的个人博客系统
  13. c 语言rand()生成随机数
  14. NVMe1.4 Admin Command学习(1)-- format identify
  15. 最强蜗牛换了手机找不到服务器,最强蜗牛服务器无响应怎么办 最强蜗牛进不去解决方法...
  16. 正版Xshell免费使用
  17. JS中(function(){xxx})(); 这种写法是什么意思?
  18. 用python写情书_用Python给喜欢人的发一封邮件吧(群发)
  19. /proc/cpuinfo 文件详解
  20. TOJ 4354 HDU 4262 Juggler / 树状数组

热门文章

  1. eclipse添加注释模板
  2. Python深入06 Python的内存管理
  3. Silverlight 视频学习札记(一)
  4. 三种方式实现轮播图功能
  5. html图片上加水印,css给图片添加水印
  6. python random.random 缩短小数点儿后位数_Python random模块制作简易的四位数验证码...
  7. raspberry pi_前5名:替代密码,Raspberry Pi进入太空等等
  8. 微信小程序网络通信(一)
  9. ES6 ArrayBuffer 概述
  10. python2048小游戏程序设计大作业_C语言大作业报告——2048小游戏程序