软件中间件技术UNIT9.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1.概述 事件从事件源到监听者的传递是通过对目标监听者对 象的Java方法调用进行的。 对每个明确的事件的发生,都 相应地定义一个明确的Java方法。这些方法都集中定义在 事件监听者(EventListener)接口中,这个接口继承了 java.util.EventListener。 实现了事件监听者接口中一 些或全部方法的类就是事件监听者。伴随着事件的发生, 相应的状态通常都封装在事件状态对象中,该对象必须继 承自java.util.EventObject。 2.事件状态对象(Event State Object) 与事件发生有关的状态信息一般都封装在一个事件状 态对象中,这种对象是java.util.EventObject的子类。在 事件状态对象中一般都包含有与事件相关的一些信息。按 设计习惯,这种事件状态对象类的名应以Event结尾。 2.事件状态对象(Event State Object) 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); } } 3.事件监听者接口与事件监听者 由于Java事件模型是基于方法调用,因而需要一个定 义并组织事件操纵方法的方式。JavaBean中,事件操纵方 法都被定义在继承了java.util.EventListener类的 EventListener接口中,按规定,EventListener接口的命 名要以Listener结尾。任何一个类如果想操纵在 EventListener接口中定义的方法都必须以实现这个接口方 式进行。这个类也就是事件监听者。 3.事件监听者接口与事件监听者 例如: //先定义了一个鼠标移动事件对象 public class MouseMovedExampleEvent extends java.util.EventObject { // 在此类中包含了与鼠标移动事件有关的状态信息 ... } //定义了鼠标移动事件的监听者接口 interface MouseMovedExampleListener extends java.util.EventListener { //在这个接口中定义了鼠标移动事件监听者所应支持的方法 void mouseMoved(MouseMovedExampleEvent mme); } 3.事件监听者接口与事件监听者 在接口中只定义方法名,方法的参数和返回值类型。如:上面接口中的mouseMoved 方法的具体实现是在下面的EventListenerObject类中定义的。 class EventListenerObject implements MouseMovedExampleListener { public void mouseMoved(MouseMovedExampleEvent mme) { ... } } EventListenerObject就可以作为MouseMovedExampleEvent事件的监听者。 4.事件源类 事件源也是一个JavaBean对象。它会在一定的条件下, 触发一些事件,当有对它触发的事件感兴趣的监听者时, 它就通过方法调用的方式通知它(它们)。这些监听者就 能感知有事件发生了。它们可以进行一些相关的处理。一 个事件源对象可以触发一个或多个事件, 每个事件又可 以有一个或多个监听者。 5.事件监听者的注册与注销 为了各种可能的事件监听者把自己注册入合适的事件 源中,建立事件源与事件监听者间的事件流,事件源必须 为事件监听者提供注册和注销的方法。事件监听者的注册 和注销要使用标准的设计格式: public void add L
显示全部