知识大全 浅析Java与C#的事件处理机制(一)
Posted 事件
篇首语:亦余心之所善兮,虽九死其犹未悔。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅析Java与C#的事件处理机制(一)相关的知识,希望对你有一定的参考价值。
浅析Java与C#的事件处理机制(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java与C#的事件处理都是实现了事件源 事件响应者机制 但又不完全相同 Java实现的是一种事件源与事件响应者两级实体对象方式 这里的事件响应者也是事件监听者 而C#实现的是一种事件源 代理 事件响应者三级实体对象方式 下面就这两种方式来具体说明
Java事件处理
从概念上讲 事件是一种在 源对象 和 监听者对象 之间 某种状态发生变化的传递机制 事件有许多不同的用途 例如在Windows系统中常要处理的鼠标事件 窗口边界改变事件 键盘事件等 在Java中则是定义了一个普通的 可扩充的事件机制 这种机制能够
对事件类型和传递的模型的定义和扩充提供一个公共框架 并适合于广泛的应用
与Java语言和环境有较高的集成度
事件能被描述环境捕获和触发
能使其它构造工具采取某种技术在设计时直接控制事件 以及事件源和事件监听者之间的联系
事件机制本身不依赖于复杂的开发工具
事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的 对每个明确的事件的发生 都相应地定义一个明确的Java方法 这些方法都集中定义在事件监听者(EventListener)接口中 这个接口要继承java util EventListener 实现了事件监听者接口中一些或全部方法的类就是事件监听者 伴随着事件的发生 相应的状态通常都封装在事件状态对象中 该对象必须继承自java util EventObject 事件状态对象作为单参传递给应响应该事件的监听者方法中 发出某种特定事件的事件源的标识是 遵从规定的设计格式为事件监听者定义注册方法 并接受对指定事件监听者接口实例的引用 有时 事件监听者不能直接实现事件监听者接口 或者还有其它的额外动作时 就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例 来建立它们之间的联系
事件状态对象(Event State Object)
与事件发生有关的状态信息一般都封装在一个事件状态对象中 这种对象是java util EventObject的子类 按设计习惯 这种事件状态对象类的名应以Event结尾 例如
public class MouseMovedExampleEvent extends java util EventObject protected int x y /* 创建一个鼠标移动事件MouseMovedExampleEvent */ MouseMovedExampleEvent(java awt Component source Point location) super(source); x = location x; y = location y; /* 获取鼠标位置*/ public Point getLocation() return new Point(x y);
事件监听者接口(EventListener Interface)与事件监听者
由于Java事件模型是基于方法调用 因而需要一个定义并组织事件操纵方法的方式 事件操纵方法都被定义在继承了java util EventListener类的EventListener接口中 按规定 EventListener接口的命名要以Listener结尾 任何一个类如果想操纵在EventListener接口中定义的方法都必须以实现这个接口方式进行 这个类也就是事件监听者 例如
/*先定义了一个鼠标移动事件对象*/ public class MouseMovedExampleEvent extends java util EventObject // 在此类中包含了与鼠标移动事件有关的状态信息 /*定义了鼠标移动事件的监听者接口*/ interface MouseMovedExampleListener extends java util EventListener /*在这个接口中定义了鼠标移动事件监听者所应支持的方法*/ void mouseMoved(MouseMovedExampleEvent mme);
在接口中只定义方法名 方法的参数和返回值类型 如 上面接口中的mouseMoved方法的具体实现是在下面的ArbitraryObject类中定义的
class ArbitraryObject implements MouseMovedExampleListener public void mouseMoved(MouseMovedExampleEvent mme)
ArbitraryObject就是MouseMovedExampleEvent事件的监听者
事件监听者的注册与注销
为了各种可能的事件监听者把自己注册入合适的事件源中 建立源与事件监听者间的事件流 事件源必须为事件监听者提供注册和注销的方法 在前面的bound属性介绍中已看到了这种使用过程 在实际中 事件监听者的注册和注销要使用标准的设计格式
public void add< ListenerType>(< ListenerType> listener) public void remove< ListenerType>(< ListenerType> listener)
首先定义了一个事件监听者接口
public interface ModelChangedListener extends java util EventListener void modelChanged(EventObject e);
接着定义事件源类
cha138/Article/program/net/201311/14840相关参考
浅析Java语言的事件处理快捷回复 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在JAVA程序
浅析Java多线程程序设计机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 多线程是Java语
浅析C#中的套接字编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!大家都知道Java语言的强大功
内省是Java语言对Bean类属性事件的一种处理方法(也就是说给定一个javabean对象我们就可以得到/调用它的所有的get/set方法) 例如类A中有属性name那我们可以通过getName
探讨与比较Java和.NET的事件处理框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!事件驱动模
Java中可复用事件处理的设计与实现代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目前面向
ASP.NET控件开发基础之复合控件事件处理浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
C#中Delegate浅析与思考 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
C#中事件处理的个人体会 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 事件是对象发送的消息以发
建立有效的应对突发事件的监测与预警机制,政府应采取的措施之一是
建立有效的应对突发事件的监测与预警机制,政府应采取的措施之一是_____。A、建立统一的突发事件信息系统B、查找突发事件发生的原因C、成立突发事件处理工作小组D、及时向群众公布事件真相答案:A解析:只