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 中的方法
}
}