0
回答
Javabean事件监听者注册和注销 书上的代码有错,求教。。。
华为云数据库免费试用   

代码如下:

package jsp.bean;



import java.util.*;
public abstract class Model<ModelChangedListener> {
//  定义一个存储事件监听者的数组
private Vector listeners=new Vector();
//  下面的modelchangedlistener即是上面设计格式中的《listenertype》
public synchronized void addModelChangedListener(ModelChangedListener mcl){
// 把监听者注册入listener数组中
listeners.addElement(mcl);
}
public synchronized void removeModelchangedListener(ModelChangedListener mcl){
// 把监听者从listeners中注销
listeners.remove(mcl);
}
// 以上两个方法的前面均冠以synchronized,是因为运行在多线程环境时,可能同时有几个对象同时要注册和注销操作
// 使用synchronized来确保它们之间的同步,开发工具或程序员使用这两个方法建立源与监听者之间的事件流。
protected  void notifyModelChanged(){
// 事件源使用本方法通知监听者发生了modelchanged事件
Vector l;
EventObject eventObject=new EventObject(this);
// 首先要把监听者复制到l数组中,冻结eventlisteners的状态以传递事件。这样来确保事件在传递到所有监听者之前,
// 已接收了事件的目标监听者的对应方法暂不生效。
synchronized (this) {
l=(Vector)listeners.clone();
}
// 依次通知注册在监听者队列中的meigejiantingzhefashenglemodelchanged事件,并把事件状态对象e做参数传递给
// 监听者队列中的每个监听者。
for(int i=0;i<l.size();i++){
((ModelChangedListener)l.elementAt(i)).Modelchanged(eventObject);
}

}
}
下划线的红字部分有错,你们把代码复制到你们电脑上运行下就知道了什么错了,我不知道怎么改求大神。。。。。
<无标签>
举报
菜鸟刘
发帖于3年前 0回/96阅
顶部