博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己编写一个Java监听器
阅读量:4558 次
发布时间:2019-06-08

本文共 2304 字,大约阅读时间需要 7 分钟。

Java监听器

1.原理:

  当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。

例如:创建一个“人”类Class Person

人拥有吃的方法public void eat(){},我们的目的就是,在这个人吃之前要提醒他洗手,所以我们就要监听这个人,不管他在什么时候吃,我们都要能够监听到并且提醒他洗手,通俗点讲这个就是监听器的作用(在吃之前提醒他洗手)。

2.组成:

   2.1Java的时间监听机制涉及到三个组件:事件源、事件监听器、事件对象

   2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来

   2.3事件监听器是由开发人员编写,开发人员在事件监听器中,通过事件对象可以拿到事件源,从而对事件源上的操作进行处理

3.实现:

  3.1创建一个人类,人具有跑、吃的方法  (创建一个事件源)

  3.2创建一个接口用来监视人的跑、吃   (事件监听器)

  3.3创建一个事件对象,里面用来封装人(Person)这个对象  (事件对象)

  3.4创建一个测试类,用来测试Java监听机制

4.源码下载:

首先创建事件源

//事件源public class Person {    //1.1首先定义一个私有的、空的监听器对象,用来接收传递进来的事件监听器(相当于一个全局变量)    private PersonListener listener;    //1.2将传递进来的事件监听器付给1.1中的listener    public void registerListener(PersonListener personListener){        this.listener=personListener;    }    //1.3判断listener是否为null,如果不为空,则执行监听器中的方法,否则照常调用    public void run(){        if(listener!=null){            Even even=new Even(this);            this.listener.dorun(even);        }        System.out.println("人具有跑的方法");    }    //1.4和1.3一个道理    public void eat(){        if(listener!=null){            Even even=new Even(this);            this.listener.doeat(even);        }        System.out.println("人具有吃的方法");    }}

创建事件监听器

//事件监听器interface PersonListener{    public void dorun(Even even);    public void doeat(Even even);    }

创建事件对象

//事件对象class Even{    private Person person;        public Even(Person person) {        super();        this.person = person;    }    public Even() {        super();    }    public Person getPerson() {        return person;    }    public void setPerson(Person person) {        this.person = person;    }    }

  *到这步我们已经把一个完整的Java监听器做完,下一步我们做测试

  注意:要实现监听,必须调用它所对应的方法例如下面的registerListener,而且必须要实现监听器接口PersonListener

public class TestListener {        public static void main(String[] args) {        Person person=new Person();        person.registerListener(new MyPersonListener());        person.run();        person.eat();    }}//实现监听器接口中的方法class MyPersonListener implements PersonListener{    @Override    public void dorun(Even even) {
     Person person = even.getPerson();  //拿到事件源 System.out.println("人在跑之前执行的动作"); } @Override public void doeat(Even even) { System.out.println("人在吃之前执行的动作"); } }

 

转载于:https://www.cnblogs.com/be-forward-to-help-others/p/5627290.html

你可能感兴趣的文章
day_10
查看>>
ArcGIS API for JavaScript 入门教程[6] 再讲数据——Map类之可操作图层
查看>>
tfs2012 的体验地址
查看>>
打造专业外观-九宫图
查看>>
让discuz论坛单独版块贴子侧边栏(用户信息栏)关闭的修改办法
查看>>
倒计时
查看>>
Robolectric
查看>>
搜索引擎之全文搜索算法功能实现(基于Lucene)
查看>>
XShell远程连接本地虚机
查看>>
好吧,又失眠
查看>>
一个不错的cv个人主页
查看>>
20159206《网络攻防实践》第十二周学习总结
查看>>
'Upgrade' header is missing
查看>>
[git]git的分支管理
查看>>
针对NSString字符串的排序
查看>>
(五)myBatis架构以及SQlSessionFactory,SqlSession,通过代理执行crud源码分析---待更...
查看>>
关于IE6中做兼容的那点事。
查看>>
Swift创建空数组
查看>>
剑指offer(32)把数组排成最小的数
查看>>
特殊的夸赞 对女生的夸奖
查看>>