这是一个实现窗体事件的适配器的类,实现了WINDOWLISTEN接口,你翻一下JDK的文档就可以看到
这用的是他的一个匿名类

解决方案 »

  1.   

    有关Window事件的事件适配器。如果你用的是new WindowListener(),那么不得不实现windowActivated,windowClosed,windowClosing,windowDeactivated,windowDeiconified,windowIconified,windowOpened等方法。即使某些方法里面一个字符也不写。如果写成new WindowAdapter,那么只需要把需要重新复写的方法写一下就可以了。就像你上面写的,只需要关闭窗口时作些工作,就只复写一下windowClosing就可以了,其他的不用再写。
      

  2.   

    先定义类名(比如说,定义一个类 extends WindowAdapter)然后再new。这就不叫匿名类了。在这里,你直接用了WindowAdapter类,当然算是匿名类。WindowAdapter()当然是WindowAdapter类的构造函数。
      

  3.   

    你的程序等价于以下用内部类来实现:
    class Test extends Frame {

    public Test() {
    addWindowListener(new MyListener());
                      }
             private class MyListener extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
    }
    }
    }
    在内部类中为了方便可以省略自己定义的类名,直接用父类的名字来代替,new的时候其实也是调用父类的构造函数,这种方法也就是匿名类。
    适配器类是用空方法实现了接口的中的所有方法,因为在实现一个接口时你必须实现接口中的每一个方法,但有一些方法对你没有什么用,你也得用一个空方法来实现,否则编译通不过,这样程序代码显得很繁琐,所以类库中这定义了这种适配器类,你只要定义适配器类的子类,重载一下对你有用的方法就可以了。