Java中定义事件

来源:互联网 发布:指纹打卡机u盘导出数据 编辑:程序博客网 时间:2024/05/20 13:37

我们在JFrame、awt或swing中了解过事件的概念。如MouseEvent, KeyEvent, WindowEvent。

JDK就像给我们提供了框架结构一样,提供了设计事件和监听的方法。

1.设计一个事件

import java.util.EventObject;public class DemoEvent extends EventObject {Object obj;public DemoEvent(Object source){super(source);// TODO Auto-generated constructor stubobj = source;}public Object getSource(){return obj;}public void say(){System.out.println("This is say method...");}}


2.设计事件源


import java.util.Enumeration;import java.util.Vector;//import java.util.*;public class DemoSource{private Vector repository = new Vector();DemoListener dl;public DemoSource(){}public void addDemoListener(DemoListener dl)//添加监听{repository.addElement(dl);}public void notifyDemoEvent(){Enumeration<DemoListener> enum1 = repository.elements();while(enum1.hasMoreElements()){dl = (DemoListener)enum1.nextElement();dl.demoEvent(new DemoEvent(this));}}}



3.设计监听接口


import java.util.EventListener;public interface DemoListener extends EventListener {public void demoEvent(DemoEvent dm);}


4.定义3个监听器(三个监听器,监听到后说的内容区别开)


Listener1.java

public class Listener1 implements DemoListener{public void demoEvent(DemoEvent de){System.out.println("Inside listener1...");}}

Listener2.java

package demo.listener;public class Listener2 implements DemoListener{public void demoEvent(DemoEvent de){System.out.println("Inside listener2...");}}

Listener3.java

package demo.listener;public class Listener3 implements DemoListener{public void demoEvent(DemoEvent de){System.out.println("Inside listener3...");}}

5.测试类


public class TestDemo{DemoSource ds;public TestDemo(){try{ds = new DemoSource();Listener1 l1 = new Listener1();Listener2 l2 = new Listener2();Listener3 l3 = new Listener3();ds.addDemoListener(l1);ds.addDemoListener(l2);ds.addDemoListener(l3);ds.notifyDemoEvent();}catch(Exception ex){ex.printStackTrace();}}public static void main(String args[]){new TestDemo();}}


测试结果是:

Inside listener1...

Inside listener2...

Inside listener3...


原创粉丝点击