关于Java Adapter与监听器

103 阅读1分钟

使用适配器(adapter)类,最主要的一个目的,就是实现java对监听接口(接口含有多个方法)的需求,通过扩展适配器来指定对某些动作响应,不用实现接口的每一个方法,从而简化代码量。

例如:WindowListener接口:

public interface WindowListener
{
    void windowOpened(WindowEvent e);
    void windowClosing(WindowEvent e);
    void windowClosed(WindowEvent e);
    void windowIconified(WindowEvent e);
    void windowDeiconified(WindowEvent e);
    void windowActivated(WindowEvent e);
    void windowDeactivated(WindowEvent e);
}

调用其中某一个方法,其余的都不做修改。定义一个使用WindowListener的扩展类(Terminator):

Class Terminator impements WindowListener{
    public void windowClosing(WindowEvenr e){
        System.exit(0);
    }
    void windowOpened(WindowEvent e);
    void windowClosed(WindowEvent e);
    void windowIconified(WindowEvent e);
    void windowDeiconified(WindowEvent e);
    void windowActivated(WindowEvent e);
    void windowDeactivated(WindowEvent e);
}

进一步Terminator可以注册为事件监听器:

WindowListener lisener = new Terminator();
frame.addWindowLisener(lisener);

总体过程如下图:

image.png

又或者可以之间将监听器定义为框架的匿名内部类,简化代码量:

frame.addWindowLisener(new WindoqAdapter(){
        WindowAdapter(){
            public void windowClosing(WindowEvenr e){
            System.exit(0);
        }
    }

});

[Java2核心技术(7th,卷1)第三版].霍斯特曼