Java 事件机制的使用
来源:互联网 发布:美国网络瘫痪 编辑:程序博客网 时间:2024/05/28 05:15
Java中的事件机制在这里回顾和总结下。
1.事件对象
import java.util.EventObject;public class DoorEvent extends EventObject{/** * Door open and close event */private static final long serialVersionUID = 1L;private String doorState = "";public DoorEvent(Object source,String state) {super(source);// TODO Auto-generated constructor stubthis.doorState = state;}public void setDoorState(String doorstate){this.doorState = doorstate;}public String getDoorState(){return this.doorState;}}2.Listener接口
import java.util.EventListener;public interface DoorListener extends EventListener {public void doorEvent(DoorEvent event);}3.具体的Listener1和Listener2
public class MyDoorListener1 implements DoorListener{@Overridepublic void doorEvent(DoorEvent event) {// TODO Auto-generated method stubif(event.getDoorState() == "open"){System.out.println("door1 opened.");}else{System.out.println("door1 closed");}}}
public class MyDoorListener2 implements DoorListener{@Overridepublic void doorEvent(DoorEvent event) {// TODO Auto-generated method stubif(event.getDoorState() == "open"){System.out.println("door2 opened.");}else{System.out.println("door2 closed");}}}3.Manager角色
Manager角色负责发布事件,Listener负责监听。
import java.util.Collection;import java.util.HashSet;import java.util.Iterator;public class DoorManager {private Collection listeners;public void addDoorListener(DoorListener listener){if(listeners == null){listeners = new HashSet();}listeners.add(listener);}public void removeListener(DoorListener listener){if(listeners == null) return;listeners.remove(listener);}public void fireDoorOpenEvent(){if(listeners == null) return;DoorEvent event = new DoorEvent(this,"open");notifyListeners(event);}public void fireDoorCloseEvent(){if(listeners == null) return;DoorEvent event = new DoorEvent(this,"close");notifyListeners(event);}private void notifyListeners(DoorEvent event) { Iterator iter = listeners.iterator(); while (iter.hasNext()) { DoorListener listener = (DoorListener) iter.next(); listener.doorEvent(event); } }}4.测试类
public class Hello {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubDoorManager manager = new DoorManager();manager.addDoorListener(new MyDoorListener1());manager.addDoorListener(new MyDoorListener2());manager.fireDoorOpenEvent();System.out.println("I am in.");manager.fireDoorCloseEvent();}}输出:
door1 opened.door2 opened.I am in.door1 closeddoor2 closed
0 0
- Java 事件机制的使用
- java的事件处理机制
- Java的事件处理机制
- Java的事件处理机制
- java 的事件处理机制
- Java的事件处理机制
- JAVA的事件处理机制
- Java的事件处理机制
- java的事件处理机制
- JAVA的事件监听机制
- Java的事件处理机制
- Java的事件监听机制
- .net事件机制使用的设计模式
- 事件传递机制和recycleview的使用
- 使用事件机制同步线程的例子
- 用C++模拟Java的事件机制
- java的事件处理机制基础
- java事件处理机制的核心
- Python实现的内存表
- ReactiveCocoa Tutorial – The Definitive Introduction: Part 1/2
- linux iptables原理及配置详解
- 【Android】【内存】java and dalvik memory
- 9、模板方法模式(TemplateMethod)
- Java 事件机制的使用
- 简单入门Java反射
- 光标输入框定位和获取位置
- Oracle 11g ORA-28002:口令将过期的解决方法
- Linux vmstat命令实战详解
- HDU2027 统计元音
- c++11 bind注意
- 微信公众平台开发关于“该公众号暂时无法提供服务,请稍后再试”解决方案
- Win7系统上配置使用Intellij Idea 13的SVN插件