事件状态对象(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); }} 事件监听者接口与事件监听者
public void add< ListenerType>(< ListenerType> listener); public void remove< ListenerType>(< ListenerType> listener);
例如首先定义了一个事件监听者接口:
public interface ModelChangedListener extends java.util.EventListener { void modelChanged(EventObject e); }
接着定义事件源类: public abstract class Model { private Vector listeners = new Vector(); // 定义了一个储存事件监听者的数组 /*上面设计格式中的< ListenerType>在此处即是下面的ModelChangedListener*/
public synchronized void addModelChangedListener (ModelChangedListener mcl) { listeners.addElement(mcl); }//把监听者注册入listeners数组中 public synchronized void removeModelChangedListener(ModelChangedListener mcl) { listeners.removeElement(mcl); //把监听者从listeners中注销 }