全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。