JAVA用户自定义事件监听实例代码

很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下:
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 Spring 事件监听详情解析
# Java基础学习之Swing事件监听
# java中接口和事件监听器的深入理解
# Java使用自定义注解实现为事件源绑定事件监听器操作示例
# Java事件监听机制讲解
# 详谈Java中的事件监听机制
# JavaGUI事件监听机制超详细讲解
# 要注意
# 这步
# 自定义
# 实现了
# 都要
# 希望能
# 写了
# 谢谢大家
# 不全
# 源代码
# 继承了
# String
# sName
# private
# public
# extends
# DemoEvent
# obj
# Object
# println
相关文章:
制作门户网站的参考文献在哪,小说网站怎么建立?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何制作网站标识牌,动态网站如何制作(教程)?
如何续费美橙建站之星域名及服务?
如何安全更换建站之星模板并保留数据?
宝塔建站助手安装配置与建站模板使用全流程解析
网站制作说明怎么写,简述网页设计的流程并说明原因?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
建站主机选虚拟主机还是云服务器更好?
如何在服务器上配置二级域名建站?
红河网站制作公司,红河事业单位身份证如何上传?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何在阿里云服务器自主搭建网站?
如何快速搭建高效服务器建站系统?
微课制作网站有哪些,微课网怎么进?
如何在阿里云高效完成企业建站全流程?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星会员如何解锁更多建站功能?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何在香港免费服务器上快速搭建网站?
网站微信制作软件,如何制作微信链接?
宝塔建站后网页无法访问如何解决?
智能起名网站制作软件有哪些,制作logo的软件?
建站VPS配置与SEO优化指南:关键词排名提升策略
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
建站主机空间推荐 高性价比配置与快速部署方案解析
jQuery 常见小例汇总
如何在Golang中引入测试模块_Golang测试包导入与使用实践
如何配置WinSCP新建站点的密钥验证步骤?
如何选择适合PHP云建站的开源框架?
想学网站制作怎么学,建立一个网站要花费多少?
为什么Go需要go mod文件_Go go mod文件作用说明
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
建站org新手必看:2024最新搭建流程与模板选择技巧
建站之星安装路径如何正确选择及配置?
建站之家VIP精选网站模板与SEO优化教程整合指南
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站之星logo尺寸如何设置最合适?
如何快速重置建站主机并恢复默认配置?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。