什么是监听器?
百度百科给的定义是:Java事件监听器是由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.util.EventObject的类。
通俗来说就是:监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
监听器组件
监听器涉及三个组件:事件源,事件对象,事件监听器 当事件源发生某个动作的时候,它会调用事件监听器的方法,并在调用事件监听器方法的时候把事件对象传递进去。 我们在监听器中就可以通过事件对象获取得到事件源,从而对事件源进行操作!
(1)事件:用户对组件的一个操作,称之为一个事件
(2)事件源:发生事件的组件就是事件源
(3)事件监听器(处理器):监听并负责处理事件的方法
执行顺序
//1、使用匿名内部类给事件源注册监听器,
public static void main(String[] args) {
MyCat cat = new MyCat();
//cat为事件源
cat.addListener(new MyCat.IListener() {//调用自定义创建的监听器,并调用监听器中的回调方法
@Override
public void onEvent(String event) {
System.out.println("监听到cat move:并执行监听器的onEvent方法");
}
});
cat.move();//cat.move为被监听的事件
}
public class MyCat extends Cat {
@Override
public void move() {
System.out.println("MyCat move=====被执行:");
if (mListener!= null) { // 这里判断是否有监听器
mListener.onEvent("cat move"); // 调用监听器
}
}
// 创建监听器接口,,并提供添加监听器的方法
public interface IListener {
void onEvent(String event);
}
IListener mListener;
public void addListener(IListener listener) {
mListener = listener;
}
}
执行结果
总结
1、给事件源注册监听器
2、组件接受外部作用,也就是事件被触发
3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器
4、事件处理器启动,并执行相关的代码来处理该事件。