java中的事件机制的参与者有3种角色:

1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中

2.event source:具体的事件源,比如说,你点击一个button,那么button就是event source,要想使button对某些事件进行响应,你就需要注册特定的listener。

3.event listener:对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承 java.util.EventListener。 实现了事件监听者接口中一些或全部方法的类就是事件监听者。

(个人理解:)

将需要监听的对象封装在自定义的事件状态对象类(EventObject)中,这个类必须继承java.util.EventObject。事件状态对象作为单参传递给应响应该事件的自定义监听器方法中。该自定义监听器需实现自定义监听接口,实现此接口中以事件状态对象为参数的方法。发出某种特定事件的事件源:必须在类中实例化自定义的监听器对象,当监听到event object时,调用相应方法进行处理。

先看看jdk提供的event包:

public interface EventListener:所有事件侦听器接口必须扩展的标记接口。

public class EventObject extends Object implements Serializable
所有事件状态对象都将从其派生的根类。 所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。

举例:

 1 //自定义的事件状态对象类
2 class MyEvent extends EventObject
3 {
4 private Object obj;
5 //此监听对象可以是自定义对象
6 private String sName;
7 public MyEvent(Object source,String sName)
8 {
9 super(source);
10 this.obj=source;
11 this.sName=sName; }
12 public Object getObj()
13 {
14 return obj;
15 }
16 public String getsName()
17 {
18 return sName;
19 }
20 }
21 //定义自定义监听器接口,继承EventListener
22 interface MyEventListener extends EventListener
23 {
24 void handleEvent (MyEvent me);
25 }
26 //定义事件源
27 class MyEventSource
28 {
29 private Vector list=new Vector();
30 private String sName = "";
31 public MyEventSource()
32 {
33 super();
34 }
35 public void addMyEventListener(MyEventListener me)
36 {
37 list.add(me);
38 }
39 public void deleteMyEventListener(MyEventListener me)
40 {
41 list.remove(me);
42 }
43 public void notifyMyEvent(MyEvent me)
44 {
45 Iterator it=list.iterator();
46 while(it.hasNext())
47 {
48 //在类中实例化自定义的监听器对象,并调用监听器方法
49 ((MyEventListener) it.next()).handleEvent(me);
50 }
51 }
52 public void setName(String str)
53 { boolean bool = false;
54 if (str == null && sName != null)
55 bool = true;
56 else if (str != null && sName == null)
57 bool = true;
58 else if (!sName.equals(str))
59 bool = true;
60 this.sName = str;
61 // 如果改变则执行事件
62 if (bool)
63 notifyMyEvent(new MyEvent(this, sName));
64 }
65 public String getsName()
66 { return sName; }
67 }
68 //自定义监听器,继承自定义监听接口
69 class Mylistener implements MyEventListener
70 {
71 public Map<Integer, String> map =null;
72 public int i=0;
73
74 public Mylistener(Map<Integer, String> map)
75 {
76 this.map = map;
77 MyEventSource mes = new MyEventSource();
78 mes.addMyEventListener(this);
79 mes.setName("niu");
80 }
81
82 //实现接口中的方法
83 public void handleEvent(MyEvent me)
84 {
85 System.out.println("me.getSource() "+me.getSource());
86 System.out.println("me.getsName() "+me.getsName());
87 //此处可以将写,将监听到的对象存入map中
88 map.put(++i, me.getsName());
89 }
90 }
91 //主函数
92 public class test2
93 {
94 public static void main(String args[])
95 {
96 Map<Integer, String> map = new HashMap<Integer, String>();
97 Mylistener mylistener = new Mylistener(map);
98 }
99 }

实际运用可能是:

事件源是一个一直接收的线程,线程中一直监听需要监听的对象

在主函数中执行两个线程

1.事件源的接收线程

2.一个计时器,每隔一段时间先试一下监听到的对象个数

TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("size:"+DPMap.size());
}
}; Calendar calendar = Calendar.getInstance();
Date firstTime = calendar.getTime();
Timer timer = new Timer();
timer.schedule(task, firstTime, 20*1000);

【转】java事件监听机制的更多相关文章

  1. java事件监听机制

    1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...

  2. java事件监听机制2

    今天早上的两点收获: 1.addActionListener(其中的setActionCommand函数就是要对对象进行唯一性的标记,便于消息传来后进行处理.理论上actionlistener可以全部 ...

  3. JAVA事件监听机制的实现

    今天学习了java的事件编程机制,略有体会,先在此记下心得. 第一,首先明确几个概念. 事件源:一个产生或者触发事件的对象.事件:承载事件源状态改变时的信息对象.事件监听器接口:实际上就是一个类,该类 ...

  4. Java事件监听机制与观察者设计模式

    一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...

  5. JAVA事件监听机制学习

    //事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...

  6. JAVA事件监听机制与实现

    事件监听机制的实现:参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回调函数) 事件有许 ...

  7. java 事件监听机制组成

    事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...

  8. java事件监听机制(自定义事件)

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...

  9. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

随机推荐

  1. UDP接收百万级数据的解决方案

    小序 到新公司不久,就接到一个任务:有个发送方,会通过udp发送一些信息,然后服务接收到信息后保存到数据库的一张表A,保存的这些数据在经过一系列处理,处理完成后累积到另一张表B,然后清空处理的表A的数 ...

  2. 【SQL】- 基础知识梳理(六) - 游标

    游标的概念 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标(Cursor): 是处理数据的一种方法. 它可以定位到结果集中的某一行,对数据进行读写. 也可以移动游标定位到你需要的 ...

  3. CentOS7的一些初始化

    默认最小化安装 [root@GVMCET001 ~]# nmtui  设置网络,主机名等 [root@GVMCET001 ~]# yum update 更新系统 SSH [root@GVMCET001 ...

  4. css预处理器less和scss之sass介绍(二)

    本来打算整理jQuery Mobile来着,但是没有研究明白,所以接着上个周的继续介绍... [scss中的基础语法]   1.scss中的变量 ①声明变量:$变量名:变量值 $width:100px ...

  5. React——高阶组件

    1.在React中higher-order component (HOC)是一种重用组件逻辑的高级技术.HOC不是React API中的一部分.HOC是一个函数,该函数接收一个组件并且返回一个新组件. ...

  6. 动易CMS - 添加自定义字段

    SELECT TOP 10 * FROM PE_CommonModel C INNER JOIN PE_U_xsjg U ON C.ItemID=U.ID WHERE C.Status=99 ORDE ...

  7. TCP/IP(四)网络层

    前言 前面给大家介绍了计算机网络的基本概述,物理层和数据链路层.这一篇给大家介绍面试中经常会被问到的网络层.在介绍之前我们回顾一下之前学习的知识! CP/IP协议栈:物理层.链路层.网络层.传输层.应 ...

  8. Qt中的坐标系统

    Qt使用统一的坐标系统来定位窗口部件的位置和大小. 以屏幕的左上角为原点即(0, 0)点,从左向右为x轴正向,从上向下为y轴正向,这整个屏幕的坐标系统就用来定位顶层窗口: 此外,窗口内部也有自己的坐标 ...

  9. 项目管理软件之争,禅道和JIRA大对比

    本文摘要: 一. 产品介绍 二. 界面设计 1. 界面颜色设计 2. 布局结构 三. 功能区别 四. 价格对比 五. 后期服务 六. 优缺点 七. 总结 说到项目管理软件,不得不提的是禅道和JIRA. ...

  10. 聊聊Java中几种常用的设计模式

    1.单例模式(有的书上说叫单态模式其实都一样) 该模式主要目的是使内存中保持1个对象.看下面的例子: package org.sp.singleton; //方法一 public class Sing ...