通过DemoEvent.java文件创建DemoEvent类,这个类继承EventObject。这个类的构造函数的参数传递了产生这个事件的事件源(比如各种控件),方法getSource用来获得这个事件源的引用。
1 package com.css.event;
2
3 import java.util.EventListener;
4
5 /**
6 * Created by IntelliJ IDEA.
7 * User: liuzhy
8 * Date: 2010-11-2
9 * Time: 15:25:58
10 */
11 public interface DemoListener extends EventListener {
12 public void demoEvent(DemoEvent dm);
13 }
14
通过上面的接口我们再定义事件监听类,这些类具体实现了监听功能和事件处理功能。
1 package com.css.event;
2
3 /**
4 * Created by IntelliJ IDEA.
5 * User: liuzhy
6 * Date: 2010-11-2
7 * Time: 15:27:50
8 */
9 public class Listener1 implements DemoListener {
10 public void demoEvent(DemoEvent dm) {
11 System.out.println("Inside listener1 ...");
12 dm.say();
13 }
14 }
15
通过DemeSource.ava文件创造一个事件源类,它用一个java.utile.Vector对象来存储所有的事件监听器对象,存储方式是通过 addListener(..)这样的方法。notifyDemeEvent(..)是触发事件的方法,用来通知系统:事件发生了,你调用相应的处理函数(回调函数)吧。
最后写一个测试程序测试一下
1 package com.css.event;
2
3 /**
4 * Created by IntelliJ IDEA.
5 * User: liuzhy
6 * Date: 2010-11-2
7 * Time: 15:34:14
8 */
9 public class TestDemo {
10 DemoSource ds;
11
12 public TestDemo() {
13 ds = new DemoSource();
14 Listener1 l1 = new Listener1();
15
16 ds.addDemoListener(l1);
17 ds.notifyDemoEvent();
18 }
19
20 public static void main(String[] args) {
21 new TestDemo();
22 }
23 }
24
注:我们可以建立很多Listener,我这里因为懒省事,就建立了一个Listener1,其实可以建立很多,就像我前面说的,可以监听一个实体属性的改变,监听方法的改变等等监听事件