事件狀態對象(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中注銷 }