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方法
将EventObject子类作为参数,定义事件对应的listener接口。实现source。
其中有三个主要相关的类
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。
相关文章推荐
- 最快实现spring 实例
- java学习线路,至于你信不信,反正我信了
- 【leetcode】【160】Intersection of Two Linked Lists
- Leetcode:119. Pascal's Triangle II(JAVA)
- Spring整合Junit4
- struts2 动态方法调用
- springMVC的配置二
- java将时间用毫秒表示
- JavaWeb开发基础--JSP入门
- ubuntu 设置 默认的JDK路径
- spring 常见错误
- springMVC配置一
- 安卓和Java的垃圾回收
- MyEclipse中导入jdk源码
- Leetcode:118. Pascal's Triangle(JAVA)
- 【leetcode】【155】Min Stack
- 了解 Spring Data JPA
- 《Java 2 实用教程》读书笔记(三)
- java解密zip文件(亲测可用)
- eclipse中maven配置文件pom.xml解析报错