钟鼓缀玉何足贵下一句:java自定义监听器的示例代码
来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 02:01:42
java自定义监听器的示例代码JAVA用户自定义事件监听完整例子
JAVA用户自定义事件监听完整例子- ---sunfruit 很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下:
package com.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 com.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 static final long serialVersionUID = -8352051534142982085L;
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 com.Demo;import java.util.Enumeration;
import java.util.Vector;/**
* 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 en = repository.elements();// 这步要注意同步问题
while (en.hasMoreElements()) {
dl = (DemoListener) en.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 com.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用户自定义事件监听完整例子- ---sunfruit 很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下:
package com.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 com.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 static final long serialVersionUID = -8352051534142982085L;
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 com.Demo;import java.util.Enumeration;
import java.util.Vector;/**
* Title: 使用事件的类 Description: 该类实现了监听器的添加和监听器方法的执行,并且实现了由于属性的改变而执行事件
* Description: 在添加、删除、执行监听器的时候都要注意同步问题 Copyright: Copyright (c) 2005 Company:
* cuijiang
*
* @author not attributable
* @version 1.0
*/
public class DemoSource {
private 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
while (en.hasMoreElements()) {
dl = (DemoListener) en.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 com.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 监听器
myeclipse优化+自定义java注释模板+自定义Java代码模板 - 只管登山,不向...
创建自定义工具栏示例-
JAVA代码编写的30条建议 Java学习路径
jquery的FormValidator 的示例代码非常好的
Java代码混淆器
手机监听器是真的吗
建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C++代码
Flash自定义右键菜单代码
自定义QQ空间代码使用方法
静态代码检测工具对比(Java)
静态代码检测工具对比 (Java)
JAVA中实现十进制与其它自定义进制进行相互转换。 - yz124的日志 - 网易博客
图片各种移动代码汇编及示例
AIX下自动启动Oracle数据库与监听器的方法
多媒体的自定义代码:Flash, Rm,Midi,Mp3,背景音乐【隐藏&不隐藏】
java异常处理之自定义异常类 - - JavaEye技术网站
.net与java 使用自定义对象通过WebService调用
电话监听器
监听器价格
自定义小型代码播放器-2
自定义小型代码播放器-1
网易博客如何使用HTML自定义代码