您的位置:首页 > 编程语言 > Java开发

java 事件机制探讨

2016-03-08 10:40 471 查看
周末有人问道我java中事件机制是怎么实现的,天天只知道new一个事件适配器,今天结合网上的文章一起看看java中如何实现事件的监听。其实就是自定义事件。

  其中有三个主要相关的类

    1、EventObject
所有事件状态对象都将从其派生的根类。
        所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。
    2、EventListener  接口
        public interface EventListener

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

    3、source    具体的接受事件的实体,比如说,你点击一个button,那么button就是event source,这样你必须使button对某些事件进行相应,你就需要注册特定的listener,比如说MouseEvent之中的 MouseClicked方法,这是他就必须有了add方法

 

 

 

 

package java1.base1.event1;

import java.util.EventListener;
import java.util.EventObject;

public class DemoEvent extends EventObject {
public DemoEvent(Object source) {
super(source);
}
}

 
 

package java1.base1.event1;

import java.util.EventListener;

/**
* @Title: Demolistener.java
* @Description: <br>
*               <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:30:19
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public interface Demolistener extends EventListener {
public void DemoEvent(DemoEvent de);
}

 

package java1.base1.event1;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import com.sun.org.apache.bcel.internal.generic.NEW;

/**
* @Title: DemoSource.java
* @Description: <br>
*               <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:34:16
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public class DemoSource {
private List list=new ArrayList();
Demolistener dl;
public void addDemoListener(Demolistener dl){
list.add(dl);
}
public void notifyDemoEvent(){
for(int i=0;i<list.size();i++){
dl=(Demolistener)list.get(i);
dl.DemoEvent(new DemoEvent(dl));
}
}

}

 
package java1.base1.event1;

/**
* @Title: TestDemoEvent.java
* @Description: <br>
*               <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:51:41
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public class TestDemoEvent {
DemoSource Ds;
public TestDemoEvent(){
try {
Ds=new DemoSource();
Ds.addDemoListener(new Demolistener(){
public void DemoEvent(DemoEvent de) {
System.out.println("spy-sky 455927885 ");
}
});
} catch (Exception e) {
e.printStackTrace();
}
Ds.notifyDemoEvent();
}
/**
* @param args
*/
public static void main(String[] args) {
new TestDemoEvent();
}

}

  将EventObject子类作为参数,定义事件对应的listener接口。实现source。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: