JAVA事件响应机制(转)
来源:互联网 发布:程序员加班猝死 编辑:程序博客网 时间:2024/06/02 15:53
JAVA事件响应机制1,先自定义一个事件public class MyEvent extends java.util.EventObject{ public MyEvent(Object source) { super(source); }}2,再自定义一个监听器public class MyListener implements java.util.EventListener{ //这里是当事件发生后的响应过程 public void EventActivated(MyEvent me) { System.out.println("事件已经被触发"); }}3,以下这个类为触发事件的事件源public class MyObject { private Vector vectorListeners=new Vector(); public synchronized void addMyListener(MyListener ml) { vectorListeners.addElement(ml); } public synchronized void removeMyListener(MyListener ml) { vectorListeners.removeElement(ml); } protected void activateMyEvent() { Vector tempVector=null; MyEvent e=new MyEvent(this); synchronized(this) { tempVector=(Vector)vectorListeners.clone(); for(int i=0;i<tempVector.size();i++) { MyListener ml=(MyListener)tempVector.elementAt(i); ml.EventActivated(e); } } } //定义一个公用方法用于触发事件 public void test() { activateMyEvent(); } }4,测试类public class Test {public static void main(String[] args) { MyObject mo=new MyObject(); //注册该事件 mo.addMyListener(new MyListener()); //触发该事件 mo.test(); }}
来自:http://zhidao.baidu.com/question/50126506.html
以下是个人补充,上面说明了某个类能够发出一个事件的情况。如果是可以发出多个事件,上面设计就不是很合适了。
我们可以改成以下这样。
public class MyObject { private Vector vectorListeners=new Vector(); public static final int Event1 = 0; //事件类型1public static final int Event2 = 1; // 事件类型2public synchronized void addListener(int type,EventListener listener) { // 绑定事件类型和监听类NODE node = new NODE(type,listener);vectorListeners.addElement(node); } public synchronized void removeListener(int type,Listener listener) {for(int i=0;i < vectorListeners.size;i++){if(vectorListeners[i].type.equals(type ) && vectorListeners[i].listener.equals(listener)vectorListeners.removeElementAt(i);} } protected void activateMyEvent() { Vector tempVector=null; MyEvent e=new MyEvent(this); synchronized(this) { tempVector=(Vector)vectorListeners.clone(); for(int i=0;i<tempVector.size();i++) { NODE node =(NODE)tempVector.elementAt(i); node.listenner.EventActivated(e); } } }
- JAVA事件响应机制(转)
- JAVA事件响应机制
- Swing事件响应机制
- iOS事件响应机制
- 事件响应机制
- vtk事件响应机制
- cocos事件响应机制
- cocos2dx 事件响应机制 CCNotificationCenter
- Android MotionEvent事件响应机制
- iOS事件传递响应机制
- iOS事件响应机制总结
- java 事件响应
- JAVA 事件机制(转)
- Cocos2dx 事件响应机制(2):事件处理机制
- Android事件分发机制,事件拦截和事件响应
- C#事件机制及响应方法
- UIScrollView 响应触摸事件的机制
- 事件响应机制与观察者模式
- ssh 暴力攻击 <-- 从中韩渔民海警对抗到网络对抗
- c++ 虚函数实现机制
- WCF的Service用客户端去访问时加SSL验证
- greensock又出重量级产品 - LoaderMax (转)
- Logger详解(三)
- JAVA事件响应机制(转)
- 反论文抄袭检查,吼吼,终于找到了
- Logger详解(四)
- C#中ToString格式大全
- J2EE ajax中文乱码解决
- mysql 内置函数
- 使用不同版本的 so 文件
- Membase存储
- Logcat源码分析(一)