基于事件/监听器的模型的学习
2011-11-07 00:00
302 查看
package com.lan.u; import java.util.Date; import java.util.EventListener; import java.util.EventObject; import java.util.Vector; public class Demo { // test public static void main(String[] args) { MyEventSource es = new MyEventSource(); es.setOnClickListener(new MyEventListener() { @Override public void onClick(MyEventObject e) { System.out.println("事件源名称:" + e.getName()); System.out.println(e.getMsg()); } }); es.doClick(); } } /** * * @author lanshon Define an event state Object(定义事件状态对象类) * */ class MyEventObject extends EventObject { private static final long serialVersionUID = 1L; private Object source; public String getName() { return ((MyEventSource) source).getName(); } public MyEventObject(Object source) { super(source); this.source = source; } // 获得事件状态对象的信息 public String getMsg() { return "Now,the time is " + new Date().toString(); } } /** * * @author lanshon Define a event listener interface */ interface MyEventListener extends EventListener { void onClick(MyEventObject e); } /** * * @author lanshon 模拟事件源 */ class MyEventSource { // 事件源名称 private String name = "OnClickSource"; // 存放监听器 private Vector<MyEventListener> v = new Vector<MyEventListener>(); MyEventSource() { } MyEventSource(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } // register a 监听器,应该添加synchronized 关键字 public void setOnClickListener(MyEventListener e) { if (!v.contains(e)) { v.add(e); } } // remove a Listener,应该添加synchronized 关键字 public void removeOnClickListener(MyEventListener e) { if (v.contains(e)) { v.remove(e); } } protected void notifyEvent(MyEventObject eo) { for (MyEventListener e : v) { e.onClick(eo); } } // 模拟点击事件 public void doClick() { MyEventObject eo = new MyEventObject(this); notifyEvent(eo); } }
相关文章推荐
- Java学习之 Java事件模型
- android学习11#--基于回调的事件处理
- Java学习笔记(二)事件监听器
- javascript事件模型与事件监听器【知识总结】
- 【Python学习系列十八】基于scikit-learn库逻辑回归训练模型(delta比赛代码3)
- 好程序员笔记--Android基于事件监听器处理机制
- Android 事件处理模型(二) 基于监听接口的事件处理
- 轻松学习JavaScript二十七:DOM编程学习之事件模型
- DOM事件模型学习
- js学习笔记之事件处理模型
- Java 事件模型基础:监听器、事件、事件源、事件注册
- dom4j事件处理模型学习总结
- 基于事件通知的重叠I/O网络模型
- 基于管道化和事件驱动模型的Web请求处理(一)
- ASP.NET的事件模型(很适合学习的文章)
- 基于认知学习过程的教学事件
- 事件驱动的编程模型(学习)
- 强化学习(五)---基于模型的强化学习实战
- [学习笔记]UML小结以及基于领域模型的系统设计初步
- javascript 传统事件模型构造的事件监听器实现代码