一個事件監聽機制(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 閱讀(169)
評論(0) 編輯 收藏 所屬分類:
j2se