隨筆 - 63  文章 - 0  trackbacks - 0
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          一個事件監聽機制(Event Listener)的例程

          事件監聽機制在java編程中有很重要的應用,一般我們在處理GUI編程時,只是重寫一下監聽接口的perform函數即可。但事件監聽在底層是如何運行的?通過下面的例子我們可以有個清楚地了解。
          1.      首先寫一個事件類
          public class NewEvent {
               private int eventType=-1;
               public      NewEvent(int type){
                     eventType=type;
               }
               public int getEventType(){
                     return eventType;
               }

          }
          2.      寫一個事件監聽器

          public interface INewEventListener {
                public void doProcessEvent(NewEvent event);

          }
          3.      寫一個測試程序
          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.List;


          public class Source {
               private List listeners = new ArrayList();
               
               public void addNewEventListener(INewEventListener listener){//增加一個監聽器
                     if(!listeners.contains(listener)){
                           listeners.add(listener);
                     }
               }
               
               public void fireEvent(NewEvent event){//觸發事件
                     for (Iterator i=listeners.iterator(); i.hasNext();) {
                           INewEventListener listener = (INewEventListener)i.next();
                           listener.doProcessEvent(event);
                     }
               }
               
               public void GenerateEvent(int eventType){//生成一個指定類型的事件
                     fireEvent(new NewEvent(eventType));
               }
               
               //for test
               public static void main (String [] args){
                     Source source = new Source ();
                     source.addNewEventListener(new INewEventListener(){//增加一個監聽器,并實現這個監聽器接口的方法
                            public void doProcessEvent(NewEvent event){
                                  int eventType = event.getEventType();
                                  System.out.println("EventType "+eventType+ " was triggered");
                            }
                     });
                     source.GenerateEvent(3);//生成一個eventType為3的事件
                     
               }
               
          }

          posted on 2009-04-05 08:39 lanxin1020 閱讀(177) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 余姚市| 晋江市| 衢州市| 台江县| 邹城市| 安多县| 漳浦县| 东乌珠穆沁旗| 商都县| 隆化县| 东宁县| 江北区| 慈利县| 鹿邑县| 榆树市| 盘山县| 彰化市| 长顺县| 金华市| 晋中市| 金川县| 富裕县| 梅河口市| 奉新县| 叶城县| 德格县| 沧州市| 老河口市| 迁安市| 天等县| 青龙| 包头市| 罗平县| 南郑县| 通榆县| 康平县| 龙江县| 五台县| 绥芬河市| 嵊州市| 卓资县|