全网整合营销服务商

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

免费咨询热线: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 


相关文章: 制作网站的公司有哪些,做一个公司网站要多少钱?  名字制作网站免费,所有小说网站的名字?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  盐城做公司网站,江苏电子版退休证办理流程?  宝塔新建站点为何无法访问?如何排查?  如何获取开源自助建站系统免费下载链接?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何构建满足综合性能需求的优质建站方案?  如何通过虚拟机搭建网站?详细步骤解析  如何快速搭建响应式可视化网站?  建站之星代理平台如何选择最佳方案?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  青岛网站建设如何选择本地服务器?  如何在万网自助建站平台快速创建网站?  C#如何序列化对象为XML XmlSerializer用法  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何在服务器上三步完成建站并提升流量?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何用搬瓦工VPS快速搭建个人网站?  购物网站制作公司有哪些,哪个购物网站比较好?  建站之星在线客服如何快速接入解答?  Python lxml的etree和ElementTree有什么区别  免费网站制作appp,免费制作app哪个平台好?  专业网站建设制作报价,网页设计制作要考什么证?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过虚拟主机快速搭建个人网站?  如何通过NAT技术实现内网高效建站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  营销式网站制作方案,销售哪个网站招聘效果最好?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  已有域名如何快速搭建专属网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  大型企业网站制作流程,做网站需要注册公司吗?  常州企业网站制作公司,全国继续教育网怎么登录?  广州营销型建站服务商推荐:技术优势与SEO优化解析  如何安全更换建站之星模板并保留数据?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Android使用GridView实现日历的简单功能  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  c++ stringstream用法详解_c++字符串与数字转换利器  制作宣传网站的软件,小红书可以宣传网站吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。