c# 与java 相同实现 自定义事件的触发及监听
2011-11-17 00:22
483 查看
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(); } }
c#
interface IEvent { object Source { get; set; } } interface IListener { void EventActivated(IEvent e); } class MyEvent : IEvent { public MyEvent(object source) { _source = source; } private object _source; #region IEvent 成员 public object Source { get { return _source; } set { _source = value; } } #endregion } class MyListener : IListener { #region IListener 成员 public void EventActivated(IEvent e) { throw new NotImplementedException(); } #endregion } class MyObject { private List<IListener> _listeners = new List<IListener>(); public void addListener(IListener listener) { _listeners.Add(listener); } public void removeListener(IListener listener) { _listeners.Remove(listener); } protected void activateEvent() { MyEvent e = new MyEvent(this); foreach (IListener listener in _listeners) listener.EventActivated(e); } public void test() { activateEvent(); } }
相关文章推荐
- C#的COM事件在C++和JAVA中触发和响应的实现
- 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
- 自定义java事件监听
- 通过jna简单实现java后台监听键盘触发修改系统时间
- JAVA事件监听机制的实现
- java实现table添加右键点击事件监听操作示例
- java lambda 实现事件监听 程序
- Java GUI之事件监听与处理的匿名类实现方法
- C# 实现自定义事件
- C# 监听串口数据并触发事件
- 在C#使用字典存储事件示例及实现自定义事件访问器
- DotNet(C#)实现事件远程注册和触发
- c#中事件Event声明和触发,以及自定义事件委托和系统委托EventHandler
- 不同语言中事件的实现(VB6,VB.Net,C#,Java)
- 【Java系列】(五)java实现简单的窗体和密码验证(传参,事件机制和事件监听)
- java 自定义监听事件
- c#中怎样实现当一个类实例的属性值改变时,触发事件调用另一个方法?
- JAVA用户自定义事件监听完整例子
- java基础学习总结——关于Java中事件分发和监听机制实现的代码实例
- C#中winform实现自动触发鼠标、键盘事件的方法