监听器:监听器就是一个实现了特定接口的普通java程序。这个程序专门用来监听另一个java对象的方法调用或者属性改变,当被监听的对象发生上述的事件后,监听器的某个方法就立即被执行。
监听器的事件监听机制:
1:事件监听涉及三个:事件源,事件对象 ,事件监听器
2:当事件源发生某一个动作的时候,他会调用事件监听器的一个方法,并在调用该方法的时候把事件对象传递进去,开发人员在监听器中通过事件对象就可以拿到事件源,从而对事件源进行操作。
设计一个事件源,被监听器监听, Observer(观察者设计模式)
package com.hytc.hyb; public class ListenerDemo2 { public static void main(String[] args) { Person p = new Person(); p.setName("hahaha"); p.registerListener(new PersonListener() { @Override public void dorun(Event e) { Person p = e.getSource(); System.out.println(p.getName() + "跑步"); } @Override public void doeat(Event e) { Person p = e.getSource(); System.out.println(p + "吃饭"); } }); p.eat(); } } // 设计一个事件源 class Person { private String name = "hyb"; public String getName() { return name; } public void setName(String name) { this.name = name; } private PersonListener listener; @Override public String toString() { return this.getName(); } //注册监听器,绑定监听器 public void registerListener(PersonListener listener) { this.listener = listener; } //调用监听器的方法 public void eat() { if (listener != null) { listener.doeat(new Event(this)); } } public void run() { if (listener != null) { listener.dorun(new Event(this)); } } }
//监听器接口 绑定事件源对象 interface PersonListener { public void doeat(Event e); public void dorun(Event e); } // 事件源对象 class Event { private Person source; public Event() { super(); } public Event(Person source) { super(); this.source = source; } public Person getSource() { return source; } public void setSource(Person source) { this.source = source; } }