1public TestFrame() { 
2       /* 使用匿名类添加一个窗口监听器 */ 
3       addWindowListener(new WindowAdapter() 
4       { 
5           
6           public void windowClosing(WindowEvent e) 
7           { 
8               System.out.println("Exit when Closed event"); 
9               System.exit(0); //退出应用程序 
10           } 
11
12          public void windowActivated(WindowEvent e)
13          { 
14              setTitle("Test Frame " + counter++); // 改变窗口标题 
15          } 
16      }
17      ); 以上是一个窗口类的构造器
请问第3到第17行的括号里的是addWindowListener方法的参数吗?这种方法的参数小弟看不懂,请解释一下
第4到16行跟WindowAdapter方法有什么关系?

解决方案 »

  1.   

    这是使用无名内部类的特殊写法,
    thinking in java 里有对这个的介绍/。
      

  2.   

    这里用了匿名内部类,改成下面这样楼主就看得懂了
    private class WindowHandler extends WindowsAdatper(){
      ...windowClosing...
      ...windowActivated...
    }
    public TestFrame(){
     addWindowListener(new WindowHandler());
    }
      

  3.   

    to blue009():
    有没有无名内部类的资料?我没有thinking in java。谢了。
    你能给我简单做个解释吗?
      

  4.   

    to believefym(暮色,miss,迷失,miss) 
    private class WindowHandler extends WindowsAdatper(){
    WindowsAdatper后面是不是应该没有括号,WindowsAdatper应该是个类吧?
      

  5.   

    对于无名内隐类,
    我觉得像这样
    addWindowListener(new WindowAdapter());
    这个new WindowAdapter()也可以理解为一个简单的无名内隐类。但是java允许你对他扩展:
    addWindowListener(new WindowAdapter() { f(); g(); });
    可以重新对WindowAdapter复写,或是对接口定义。