目录
一、背景
在事件处理模型中,实现一个监听器需要重写对应的监听器接口的所有方法,而有的监听器接口定义了很多方法。而如果你只需要其中一个的话,就会有累赘了。
比如说WindowListener接口有7个方法,而你可能仅仅只需要一个,那么代码会是这样:
二、引入事件适配器
事件适配器:
为接口 里的每一个方法都提供了默认的空实现。定义适配器是为了简化事件处理的代码量。使用它你需要做的就是,创建一个继承事件适配器的事件监听器类,然后重写那些需要修改的方法就行了。
以上面的WindowListener接口为例,若引入事件适配器WindowAdapter:
//继承了事件适配器的监听器类
class Terminator extends WindowAdapter {
//仅重写需要的方法
public void windowClosing(WindowEvent e) {
if (user agrees ) //给窗口增加关闭功能
System.exit(0);
}
}
Terminator w = new Terminator(); //实例化一个事件监听器对象
frame.addWindowListener(w);
代码还能进一步简化:
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (user agrees)
System.exit(0);
}
});
三、JDK中部分适配器
事件适配器均在java.awt.event中,常用的适配器如下:
Event-adapter class | Implements interface |
---|---|
ComponentAdapter | ComponentListener |
ContainerAdapter | ContainerListener |
FocusAdapter | FocusListener |
KeyAdapter | KeyListener |
MouseAdapter | MouseListener |
MouseMotionAdapter | MouseMotionListener |
WindowAdapter | WindowListene |
end
欢迎关注个人公众号“鸡翅编程”,平常会把笔记汇总成推送更新~