<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    javaGrowing

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks
     【導讀】在JAVA程序設計中,事件的處理是非常重要的,尤其是在需要自定義事件和設計JavaBean時. 本文用一個演示性的例子來說明事件及其處理過程。

      在JAVA程序設計中,事件的處理是非常重要的,尤其是在需要自定義事件和設計JavaBean時.對事件的處理過程有一個完整的認識對于編程是很有幫助的。

      下面用一個演示性的例子來說明事件及其處理過程

      一.事件的組成

      如果想要自定義一個事件,則必須提供一個事件的監聽接口以及一個事件類。在JAVA中監聽接口繼承java.util.EventListener,事件類繼承java.util.EventObject.很多基本的事件在編程環境中都已經提供可以很方便使用,但是在自定義事件中必須要要了解這些。

      下面是一個事件類的代碼,事件類可以向用戶處理程序提供被監聽類的信息

      import java.util.*;

      public class PropertyEvent extends EventObject {

      public PropertyEvent(){}

      }

      下面是監聽接口的代碼

      import java.util.*;

      public interface PropertyListener extends EventListener {

      public void propertyChanged(PropertyEvent propertyEvent);

      }

      二.事件的處理機制



      下面是一段簡要的被監聽類代碼,通過代碼分析事件處理過程

      import java.util.*;

      public class Exam {

      private int property;

      //listeners用來存放已注冊的監聽對象

      private Set listeners= new HashSet();

      .....

      public void addListener(PropertyListener propertyListener){

      //listeners必須保證只能被一個線程訪問

      synchronized(listeners){

      listeners.add(propertyListener);

      }

      }

      public void firePropertyChange(){

      Iterator iterator;

      synchronized(listeners){

      //將listeners中的類名放到iterator

      iterator = new HashSet(listeners).iterator();

      }

      //創建事件類

      PropertyEvent propertyEvent = new PropertyEvent();

      while(iterator.hasNext()){

      PropertyListener propertyListener = (propertyListener) iterator.next();

      //調用用戶的事件處理程序

      propertyListener.propertyChanged(propertyEvent);

      }

      }

      }當屬性值發生變化時,首先進行內部處理調用firePropertyChange方法,產生一個事件對象然后用事件對象為參數來調用用戶的事件處理程序。

      三.事件處理的使用

      1.基本用法

      public Exam exam;

      exam.addListener(this);

      public void propertyChange(PropertyEvent event){...}

      注:exam是被監聽對象,this為監聽對象,是已經實現了接口方法的當前類,addListener 將當前類注冊到listeners.

      2.一個被監聽對象可以有多個監聽對象

      exam.addListener(listener1);

      exam.addListener(listener2);

      這樣當exam的property發生變化時,actionListener1和actionListener2的處理程序都會被調用。當然listener1和listener2必須都是已實現接口方法的類。

      3.被監聽的對象也可以是實現了方法的接口

      exam.addListener(

      new PropertyListener(){

      //用戶定義事件處理過程

      public void propertyChange(PropertyEvent event){

      ...

      }

      );

      這種方法在實際編程中非常方便
    posted on 2006-09-28 10:45 javaGrowing 閱讀(228) 評論(0)  編輯  收藏 所屬分類: java學習
    主站蜘蛛池模板: 国产线视频精品免费观看视频| 亚洲精品无码一区二区| 国产特黄特色的大片观看免费视频| 国产美女a做受大片免费| 亚洲av中文无码字幕色不卡 | 先锋影音资源片午夜在线观看视频免费播放| 亚洲国产一成久久精品国产成人综合| 真正全免费视频a毛片| 国产亚洲?V无码?V男人的天堂| 国产免费一级高清淫曰本片| 久久久久久久尹人综合网亚洲| 成人久久免费网站| 亚洲网址在线观看| 麻豆国产精品入口免费观看| 日韩在线观看视频免费| 亚洲精品无码不卡在线播放HE| 久久午夜夜伦鲁鲁片无码免费| 亚洲视频手机在线| 好男人视频在线观看免费看片| 精品在线观看免费| 亚洲精品自产拍在线观看| 日本免费xxxx| 免费无码国产在线观国内自拍中文字幕 | 亚洲私人无码综合久久网| 国产免费小视频在线观看| 亚洲一区二区三区免费| 亚洲美女在线观看播放| 国内外成人免费视频| 国产免费人成视频尤勿视频| 亚洲视频精品在线观看| 国产成人免费a在线视频色戒| 一日本道a高清免费播放| 精品日韩亚洲AV无码| 国产福利免费在线观看| 中国一级毛片免费看视频| 亚洲校园春色小说| 亚洲av成人一区二区三区在线观看| 日本一道本不卡免费| 亚洲国产成人无码AV在线| 亚洲精品乱码久久久久久久久久久久| 91频在线观看免费大全|