自定義的事件調用方式

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

    }
   
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章