java自定义监听器的示例代码
来源:互联网 发布:七天网络教师登录 编辑:程序博客网 时间:2024/06/09 19:07
JAVA用户自定义事件监听完整例子- ---sunfruit 很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下:
package demo;import java.util.EventObject;/*** Title: 事件处理类,继承了事件基类* Description: * Copyright: Copyright (c) 2005* Company: cuijiang* @author not attributable* @version 1.0*/public class DemoEvent extends EventObject{private Object obj;private String sName;public DemoEvent(Object source,String sName) { super(source); obj = source; this.sName=sName;}public Object getSource(){ return obj;}public void say(){ System.out.println("这个是 say 方法...");} public String getName(){ return sName;}}package demo;import java.util.EventListener;/*** Title: 监听器接口* Description: * Copyright: Copyright (c) 2005* Company: cuijiang* @author not attributable* @version 1.0*/public interface DemoListener extends EventListener{public void demoEvent(DemoEvent dm);}package demo;import java.util.*;/*** Title: 使用事件的类* Description: 该类实现了监听器的添加和监听器方法的执行,并且实现了由于属性的改变而执行事件* Description: 在添加、删除、执行监听器的时候都要注意同步问题* Copyright: Copyright (c) 2005* Company: cuijiang* @author not attributable* @version 1.0*/public class DemoSource{private Vector repository = new Vector();private DemoListener dl;private String sName=""; public DemoSource(){}//注册监听器,如果这里没有使用Vector而是使用ArrayList那么要注意同步问题public void addDemoListener(DemoListener dl){ repository.addElement(dl);//这步要注意同步问题}//如果这里没有使用Vector而是使用ArrayList那么要注意同步问题public void notifyDemoEvent(DemoEvent event) { Enumeration enum = repository.elements();//这步要注意同步问题 while(enum.hasMoreElements()) { dl = (DemoListener)enum.nextElement(); dl.demoEvent(event); }}//删除监听器,如果这里没有使用Vector而是使用ArrayList那么要注意同步问题public void removeDemoListener(DemoListener dl){ repository.remove(dl);//这步要注意同步问题}/** * 设置属性 * @param str1 String */public void setName(String str1){ boolean bool=false; if(str1==null && sName!=null) bool=true; else if(str1!=null && sName==null) bool=true; else if(!sName.equals(str1)) bool=true; this.sName=str1; //如果改变则执行事件 if(bool) notifyDemoEvent(new DemoEvent(this,sName));}public String getName(){ return sName;}}package demo;import java.lang.Thread;/*** Title: 测试类* Description: 测试了由于改变属性而引起的事件发生* Copyright: Copyright (c) 2005* Company: cuijiang* @author not attributable* @version 1.0*/public class TestDemo implements DemoListener {private DemoSource ds; public TestDemo(){ ds=new DemoSource(); ds.addDemoListener(this); System.out.println("添加监听器完毕"); try { Thread.sleep(3000); //改变属性,触发事件 ds.setName("改变属性,触发事件"); } catch (InterruptedException ex) { ex.printStackTrace(); } ds.addDemoListener(this); System.out.println("添加监听器完毕2"); try { Thread.sleep(3000); //改变属性,触发事件 ds.setName("改变属性,触发事件2"); } catch (InterruptedException ex) { ex.printStackTrace(); } ds.removeDemoListener(this); System.out.println("添加监听器完毕3"); try { Thread.sleep(3000); //改变属性,触发事件 ds.setName("改变属性,触发事件3"); } catch (InterruptedException ex) { ex.printStackTrace(); }}public static void main(String args[]){ new TestDemo();}/** * demoEvent * * @param dm DemoEvent * @todo Implement this test.DemoListener method */public void demoEvent(DemoEvent dm) { System.out.println("事件处理方法"); System.out.println(dm.getName()); dm.say();}}
- java自定义监听器的示例代码
- java自定义监听器的示例代码
- 【转】java自定义监听器的示例代码(转载)
- Java监听器的常用示例
- 自定义事件监听器示例
- java监听器示例
- 自定义监听器 java
- 一个Java写的自定义的事件监听器例子
- AJAX.NET自定义异常的代码示例
- php自定义的格式化时间示例代码
- 自定义MFC ClistCtrl控件的示例代码
- 通过自定义的类来实现事件监听器接口的示例
- 自定义Quartz的Job监听器
- TestNG 创建自定义的监听器
- java 监听器的实现
- java web 的监听器
- Java的监听器种类
- Java的监听器种类
- 2012年度第三周作业
- 二进制加减法
- 又见八皇后
- linux下c语言的开发环境(1)
- libcmt.lib、msvcrt.lib冲突的主要原因
- java自定义监听器的示例代码
- linux 进程通信 -- 信号量(更新ing)
- SQL语句的预编译
- Android4.0显示SurfaceTextureClient queuebuffer 队列
- 【redhat5.5】dhcp 服务器的配置
- 杜鹏的个人博客 Flex使用Blazeds与Java交互及自定义对象转换详解
- Linux Socket编程(不限Linux)
- 开发JBoss的J2EE应用(数据源,Log4j)配置 .
- Struts2自定义拦截器