Java 中的事件角色有三个:
eventt object: 就是事件产生时具体的“事件”,用于listener的相应方法中,作为参数,一般存在于listenter的方法之中。
event source: 具体接受事件的实体,比如说,点击一个按钮,那么button就是enent source。
event listener: 事件监听器,当有其对应的 event object产生的时候,它就调用相应的方法进行处理。
这种方式也被称为方法回调(callback).
实例:
package com.JavaEventProess;
import java.util.EventObject;
import java.util.EventListener;
import java.util.ArrayList;
import java.util.List;
//事件类
class FireEvent extends EventObject{
//定义事件流对象
private Object eventSources;
//构造方法
public FireEvent(Object obj){
super(obj);
this.eventSources = obj;
}
//获得事件源
public Object getEventSources(){
return eventSources;
}
}
//事件监听器接口
interface Listener extends EventListener{
//事件方法
public void listen(FireEvent e);
}
//事件监听器实现类
class FireListener implements Listener{
@Override
public void listen(FireEvent e) {
// TODO Auto-generated method stub
System.out.println("房子着火啦!");
}
}
//事件源房子类
class House{
//定义标示
private boolean flag = false;
//监听器列表
private List listeners = new ArrayList();
//获得标示
public boolean getFlag(){
return flag;
}
//设置标示
public void setFlag(boolean flag){
this.flag = flag;
if(flag){
//通知
ntf();
}
}
//添加监听器
public void addListener(Listener l){
listeners.add(l);
}
//获得监听器
public List getListeners(){
return listeners;
}
//通知方法
public void ntf(){
//遍历监听器
for(int i=0; i<listeners.size();i++){
//获得监听器
Listener l = (Listener)listeners.get(i);
//监听
l.listen(new FireEvent(this));
}
}
}
//测试类
public class JavaEventProess {
public static void main(String[] args){
//事件源房子
House h = new House();
//添加监听器
h.addListener(new FireListener());
//匿名内部类实现
h.addListener(new Listener(){
@Override
public void listen(FireEvent e) {
// TODO Auto-generated method stub
System.out.println("冒烟啦!");
}
});
h.setFlag(true);
}
}
控制台运行输出:
房子着火啦!
冒烟啦!

657

被折叠的 条评论
为什么被折叠?



