1. java中的监听机制
a) java中的事件监听机制涉及到 三个 部分 : 事件源. 事件对象, 事件监听器
b) 当操作 事件源的时候, 会触发 事件 对象, 同时回去调用 事件监听器的某个特定的方法. 在调用这个方法的时候 传递的是 事件 对象
c) 事件对象用来 封装 事件源, 通过事件对象可以拿到 事件源的 引用.
d) 事件监听器 通常 都是 一个接口, 事件监听器的具体实现类 由 程序员 自己去编写. 那么每个方法的代码就可以自己去控制. 在每个方法被调用的时候.传递进来了一个参数叫做 事件对象, 通过事件对象就可以拿到 事件源. 从而 干自己想干的事儿.
2. 代码实现监听机制
//事件源
public class Person {
private PersonListener pl;
public void eat(){
Event e = new Event(this);
pl.doEat(e);
System.out.println(" eat ......");
}
public void run(){
Event e = new Event(this);
pl.doRun(e);
System.out.println(" run ......");
}
public void addPersonListener(PersonListener pl){
this.pl = pl;
}
}
// 事件监听器的接口
interface PersonListener {
public void doEat(Event e);
public void doRun(Event e);
}
// 事件对象 , 用于封装事件源
class Event {
private Person p;
public Event(Person p ) {
this.p = p;
}
//用于返回 事件源
public Person getP() {
return p;
}
}
3. 如何调用
public class Demo2 {
public static void main(String[] args) {
// Person
Person p = new Person(); // 事件源
// 事件监听器
p.addPersonListener(new MyPersonListener());
p.eat();
}
}
class MyPersonListener implements PersonListener {
@Override
public void doEat(Event e) {
Person p = e.getP();
System.out.println(p+ " 在 吃 ..... ");
}
@Override
public void doRun(Event e) {
// TODO Auto-generated method stub
}