import java.awt.*;
import java.awt.event.*;public class CloseTest implements WindowListener{
public Frame f; 

public void go(){
f=new Frame("test");
f.setLayout(new FlowLayout());
Button bn=new Button("yy");
f.add(bn);
f.addWindowListener(this);
f.setSize(300,200);
f.setVisible(true);
}

public static void main(String args[]){
CloseTest yy=new CloseTest();
yy.go();
}
public void windowClosed(WindowEvent e) {}
}
CloseTest is not abstract and does not override abstract method windowOpened(java.awt.event.WindowEvent) in java.awt.event.WindowListener
public class CloseTest implements WindowListener{
       ^
1 errorProcess completed.
为什么会这样?

解决方案 »

  1.   

    必须实现:windowOpened(WindowEvent e) 方法
      

  2.   

    由于WindowListener是一个抽象类,所以你需要实现windowOpened(WindowEvent e)方法,可以在你的类里面任意加一个该方法的实现:
    public void windowOpened(WindowEvent e){
       //可以啥也不干
    }
      

  3.   

    实现这七方法就行了:         
             public void windowActivated(WindowEvent e){}
    public void windowClosed(WindowEvent e){}
    public void windowClosing(WindowEvent e){}
    public void windowDeactivated(WindowEvent e){}
    public void windowDeiconified(WindowEvent e){}
    public void windowIconified(WindowEvent e){}
    public void windowOpened(WindowEvent e){}
    要不然就继承WindowAdapter适配器,这样简单
      

  4.   

    import java.awt.*;
    import java.awt.event.*;public class CloseTest {
    public Frame f; 

    public void go(){
    f=new Frame("test");
    f.setLayout(new FlowLayout());
    Button bn=new Button("yy");
    f.add(bn);
    f.addWindowListener(new WindowAdapter(){
                     public void windowClosing(WindowEvent e){
                         System.exit(0);//正常退出
                           }
                  }
              );
    f.setSize(300,200);
    f.setVisible(true);
    }
    public static void main(String args[]){
    CloseTest yy=new CloseTest();
    yy.go();
    }
    }///:~你想这样吧,ok,我给你修改好了。记得要给分哦。
    呵呵。