自己实现事件监听
2009-04-13 23:43
260 查看
1.何时需要使用事件监听?
但凡大的项目,各模块都是由不同的程序员开发,但是各模块之间需要进行通讯,用来保证项目的整体性,那么我们可以使用事件监听器来做通讯工具,用来告诉各模块自己模块的一些事件。如: 当用户被删除或者添加的时候,请通知我,我需要要做一些相关的处理事情(如删除用户和组的对应关系)。
2.创建自己的事件监听器?
2.1 添加事件源
事件源就是你需要监听的对象(类似于swing里的button),本示例将资产类型作为事件源进行讲解。
2.2添加事件状态类
事件状态类,用来描述这个事件源的状态。
2.3 添加事件监听器
事件监听器就是向外界声明,事件源所有可能发生的事件。
本例中如果需要监听资产类型的事件,就必须实现这个接口。
2.4通知监听者
当你执行操作的时候需要通知监听者。
3.如何使用事件监听器?
3.1.实现监听器接口
需要监听的类实现资产类型监听器接口implements AssetTypeListenner
实现这个接口以后,需要监听的类必须实现接口里两个方法,用来处理你的业务逻辑,
在方法里你可以通过assetEvent.getAssetType()来得到资产类型对象。
3.2.注册您的监听器
实现了监听器接口的类被称为监听者,监听者必须注册到assetTypeListenners里。
但凡大的项目,各模块都是由不同的程序员开发,但是各模块之间需要进行通讯,用来保证项目的整体性,那么我们可以使用事件监听器来做通讯工具,用来告诉各模块自己模块的一些事件。如: 当用户被删除或者添加的时候,请通知我,我需要要做一些相关的处理事情(如删除用户和组的对应关系)。
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里。
相关文章推荐
- JAVA 使用Interface 实现自己的事件监听
- 自己实现事件监听
- 自己实现事件监听
- php实现监听事件
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件,完美实现登录界面
- 自定义webView,实现带title和返回的webView,监听webView的滑动事件
- 最优-scroll事件的监听实现
- Flex(AS 3.0)实现快捷键功能--监听键盘事件
- android dialog 原来dialog对话框也有自己的按键监听事件 onKeyDown方法
- Android 自定义Dialog类,并在Activity中实现按钮监听事件
- android ViewPager实现无限轮播和设置监听事件
- java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)
- Kotlin 实现按钮点击跳转监听事件
- Qt自己定义事件实现及子线程向主线程传送事件消息
- java Swing:实现事件监听的三种方式
- ReactNative实现通知监听事件
- 在linux下C语言实现对输入事件的监听
- Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item
- 在linux下C语言实现对键盘事件的监听
- j2se使用ActionListener实现界面上按钮点击的事件监听操作