浏览 429 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-02-22 关键字: 事件监听
1.何时需要使用事件监听?
但凡大的项目,各模块都是由不同的程序员开发,但是各模块之间需要进行通讯,用来保证项目的整体性,那么我们可以使用事件监听器来做通讯工具,用来告诉各模块自己模块的一些事件。如: 当用户被删除或者添加的时候,请通知我,我需要要做一些相关的处理事情(如删除用户和组的对应关系)。 2.创建自己的事件监听器? 2.1 添加事件源 事件源就是你需要监听的对象(类似于swing里的button),本示例将资产类型作为事件源进行讲解。
public class AssetType {
private String typeId;
public String getTypeId() {
return typeId;
}
public void setTypeId(String typeId) {
this.typeId = typeId;
}
/**
* 用于存储事件监听者
*/
private EventListenerList assetListenners;
/**
* 通知注册删除资产的监听者
*/
@Transient
public void notifyDeleteAssetEvent() {
Object[] listenners = assetListenners.getListenerList();
for (Object listenner : listenners) {
if (listenner instanceof AssetTypeListenner) {
AssetTypeListenner assetListenner;
assetListenner = (AssetTypeListenner) listenner;
assetListenner.deleteAssetTypeEvent(new AssetTypeEvent(this));
}
}
}
/**
* 通知注册添加资产的监听者
*/
@Transient
public void notifyAddAssetEvent() {
Object[] listenners = assetListenners.getListenerList();
for (Object listenner : listenners) {
if (listenner instanceof AssetTypeListenner) {
AssetTypeListenner assetListenner;
assetListenner = (AssetTypeListenner) listenner;
assetListenner.addAssetTypeEvent(new AssetTypeEvent(this));
}
}
}
public EventListenerList getAssetListenners() {
return assetListenners;
}
public void setAssetListenners(EventListenerList assetListenners)
{
this.assetListenners = assetListenners;
}
}
2.2添加事件状态类 事件状态类,用来描述这个事件源的状态。
public class AssetTypeEvent extends EventObject {
private AssetType assetType;
public AssetTypeEvent(Object source) {
super(source);
assetType = (AssetType) source;
}
private static final long serialVersionUID = 1L;
public AssetType getAssetType() {
return assetType;
}
public void setAssetType(AssetType assetType) {
this.assetType = assetType;
}
}
2.3 添加事件监听器 事件监听器就是向外界声明,事件源所有可能发生的事件。 本例中如果需要监听资产类型的事件,就必须实现这个接口。
public interface AssetTypeListenner extends EventListener {
/**
* 删除资产类型
* @param assetEvent
*/
public void deleteAssetTypeEvent(AssetTypeEvent assetEvent);
/**
* 添加资产类型
* @param assetEvent
*/
public void addAssetTypeEvent(AssetTypeEvent assetEvent);
}
2.4通知监听者 当你执行操作的时候需要通知监听者。 private List<AssetTypeListenner> assetTypeListenners; assetType.setAssetListenners(assetTypeListenners);//添加所有监听者 assetType.notifyDeleteAssetEvent();//通知监听者 3.如何使用事件监听器? 3.1.实现监听器接口 需要监听的类实现资产类型监听器接口implements AssetTypeListenner 实现这个接口以后,需要监听的类必须实现接口里两个方法,用来处理你的业务逻辑, public void addAssetTypeEvent(AssetTypeEvent assetEvent) {
System.out.println("我知道了,资产类型"+assetEvent.getAssetType().getTypeName()+"将要添加");
}
public void deleteAssetTypeEvent(AssetTypeEvent assetEvent) {
System.out.println("我知道了,资产类型"+assetEvent.getAssetType().getTypeName()+"将要删除");
}
在方法里你可以通过assetEvent.getAssetType()来得到资产类型对象。 3.2.注册您的监听器 实现了监听器接口的类被称为监听者,监听者必须注册到assetTypeListenners里。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |



