當前位置:編程學習大全網 - 編程語言 - 淺析Java語言的事件處理快捷回復

淺析Java語言的事件處理快捷回復

 在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(erator();

 }

 //創建事件類

 PropertyEvent propertyEvent = new PropertyEvent();

 while(iterator hasNext()){

 PropertyListener propertyListener = (propertyListener) iterator next();

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

 propertyListener propertyChanged(propertyEvent);

 }

 }

 }

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

 三 事件處理的使用

  基本用法

 public Exam exam;

 exam addListener(this);

 public void propertyChange(PropertyEvent event){ }

 註 exam是被監聽對象 this為監聽對象 是已經實現了接口方法的當前類 addListener

 將當前類註冊到listeners

  壹個被監聽對象可以有多個監聽對象

 exam addListener(listener );

 exam addListener(listener );

 這樣當exam的property發生變化時 actionListener 和actionListener 的處理程序都會

 被調用 當然listener 和listener 必須都是已實現接口方法的類

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

 exam addListener(

 new PropertyListener(){

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

 public void propertyChange(PropertyEvent event){

 

 }

 );

lishixinzhi/Article/program/Java/hx/201311/26740

  • 上一篇:為什麽美國總統大選不采用網絡投票
  • 下一篇:二年級數學有8篇100字的日記。
  • copyright 2024編程學習大全網