在JAVA程序設計中
下面用一個演示性的例子來說明事件及其處理過程
一
如果想要自定義一個事件
下面是一個事件類的代碼
import java
public class PropertyEvent extends EventObject {
public PropertyEvent(){}
}
下面是監聽接口的代碼
import java
public interface PropertyListener extends EventListener {
public void propertyChanged(PropertyEvent propertyEvent);
}
二
下面是一段簡要的被監聽類代碼
import java
public class Exam {
private int property;
//listeners用來存放已注冊的監聽對象
private Set listeners= new HashSet();
public void addListener(PropertyListener propertyListener){
//listeners必須保證只能被一個線程訪問
synchronized(listeners){
listeners
}
}
public void firePropertyChange(){
Iterator iterator;
synchronized(listeners){
//將listeners中的類名放到iterator
iterator = new HashSet(erator();
}
//創建事件類
PropertyEvent propertyEvent = new PropertyEvent();
while(iterator
PropertyListener propertyListener = (propertyListener) iterator
//調用用戶的事件處理程序
propertyListener
}
}
}
當屬性值發生變化時
三
public Exam exam;
exam
public void propertyChange(PropertyEvent event){
注
將當前類注冊到listeners
exam
exam
這樣當exam的property發生變化時
被調用
exam
new PropertyListener(){
//用戶定義事件處理過程
public void propertyChange(PropertyEvent event){
}
);
這種方法在實際編程中非常方便
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26740.html