建议
fr.addWindowListener(this); 
写成
fr.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
        System.exit(0);
    }
});
这个方法就不要了。

解决方案 »

  1.   

    你写成
    fr.addWindowListener(this);
    this参数出错,this并没有实现WindowListener接口
    或者你把这一行去掉看看你上面是两种事件处理模式混在一起了,又想用
    基于继承的事件模型和基于授权的事件模型
    你想用哪一种。不知道你这是哪里找来的题,我没空给你调试
    最好不是老师给你的题目,我会很烦的。
      

  2.   

    import java.awt.*;         import java.awt.event.*;    public class MyFrame extends Frame {          public static void main(String args[]) {          MyFrame fr=new MyFrame("Hello World");    fr.addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e){
            System.exit(0);
        }
    });
        //给窗口设置监听器    fr.setSize(400,300);           //设定尺寸400*300    fr.setBackground(Color.blue);   //设定背景色为蓝色    fr.setVisible(true);             //设置可见   }   public MyFrame(String s){     super(s);                    //调用父类构造方法,显示标题栏字符   }  }
    这样会关不上窗口吗?
      

  3.   

    import java.awt.*;         import java.awt.event.*;    public class MyFrame extends Frame {          public static void main(String args[]) {          MyFrame fr=new MyFrame("Hello World");    fr.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        //给窗口设置监听器    fr.setSize(400,300);           //设定尺寸400*300    fr.setBackground(Color.blue);   //设定背景色为蓝色    fr.setVisible(true);             //设置可见   }   public MyFrame(String s){     super(s);                    //调用父类构造方法,显示标题栏字符   }     public void processWindowEvent(WindowEvent e) {  //窗口事件处理方法     super.processWindowEvent(e);     if (e.getID() == WindowEvent.WINDOW_CLOSING) {       System.exit(0);             //系统退出     }   }}这样也可以,要给frame加上
    fr.enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      

  4.   

    public class MyFrame extends Frame implement WindowListener{}
    没有继承WindowListener接口,如果不用WindowListener接口,就用Adapter