1.定義一個EventObject的子類
public class XXXEvent extends EventObject
2.定義一個EventListener的子類接口
public interface XXXListener extends EventListener
3.對某個控件或者界面添加定義的接口,即上面的XXXListener,這個接口的實現方法如下
public void addXXXListener(XXXListener xxxListener)
{
//listeners是定義在控件或者界面中的一個全局變量,用來存放所有的XXXListener
synchronized(listeners)
{
listeners.add(xxxListener);
}
}
4.在控件上定義一個事件或者AbstractAction,來觸發上面的XXXListener
class XXXAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
fireXXXListener();
}
}
public void fireXXXListener()
{
Iterator iterator;
synchronized(listeners)
{
iterator = (new HashSet(listeners)).iterator();
}
EventObject xxxEvent = new XXXEvent(this);//這裏也可以爲XXXEvent附加一些自定義的信息。
XXXListener xxxListener;
for(; iterator.hasNext();(XXXListener)iterator.next() )
{
xxxListener.doAction(xxxEvent)
//這裏所有實現XXXListener的類在doAction方法中就可以讀取到xxxEvent中自定義的一些信息了
//doAction是定義在XXXListener 中的方法
}
}