class MyFrame extends Frame{
ArrayList<Point> list=new ArrayList<Point>();//泛型

public MyFrame(){
setBounds(0,0,400,300);
setVisible(true); this.addWindowListener(new WindowAdapter(){//窗口事件
public void windowClosing(WindowEvent e){
setVisible(false);
System.exit(0);
}
});
}
如题

解决方案 »

  1.   

    this.addWindowListener
    是给窗体add的window事件。当点击右上角X时,出发windowClosing事件,执行事件方法内容。
      

  2.   

        setVisible 是由MyFrame这个类调用的,你可以在这个程序中测试一下,把setVisible改成this.setVisible()看看,他会报错,这说明内部类不会调用这个方法
      

  3.   


    为什么在内部类中 会是有MyFrame调用了?
      

  4.   

        我认为,肯定是匿名内部类对象调用的. 因为它就在内部类的方法里. 
        内部类可以直接访问它的外围类的成员的。这个setVisible(boolean b)方法就是其外围类MyFrame从Frame继承来的。
        不信你在内部类里定义一个setVisible(boolean b)方法,让它显示一个输出,测试一下那个窗口还关吗?
    package csdn.awt;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;class CsdnMyFrame extends Frame
    {
        ArrayList<Point> list=new ArrayList<Point>();//泛型
        
        public CsdnMyFrame()
        {
            setBounds(0,0,400,300);
            this.setVisible(true);        this.addWindowListener(new WindowAdapter()
    {//窗口事件
                 public void windowClosing(WindowEvent e)
    {
       setVisible(false);
                     System.exit(0);
                 }
    public void setVisible(boolean b)
    {
    System.out.println("我是"+this);
    }


             });
        }
    }