日期:2014-05-20  浏览次数:20691 次

求教awt关闭窗口的问题
Java code
package awt;

import java.awt.*;
import java.awt.event.*;
public class ExGui{
         private Frame f;
         private Button b1;
         private Button b2;
         public ExGui(){
             // this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
//这段code放在下面的函数里也不能起到,一点窗口的叉子就关闭窗口的作用。
         }
         private void addWindowListener(WindowAdapter windowAdapter) {
            // TODO Auto-generated method stub
            
        }
        public static void main(String args[]){
                     ExGui that = new ExGui();
                   
                     that.go();
}

          public void go(){
                 f = new Frame("GUI example");
                 f.setLayout(new FlowLayout()); 
                                    //设置布局管理器为FlowLayout
                 b1 = new Button("Press Me"); 
                                    //按钮上显示字符"Press Me"
                 b2 = new Button("Don't Press Me");
                 f.add(b1);
                 f.add(b2);
                 f.pack(); 
                //紧凑排列,其作用相当于setSize(),即让窗口尽量小,小到刚刚能够包容住b1、b2两个按钮
                 
                                  f.setVisible(true);
                  }

    
        }


------解决方案--------------------
public ExGui(){
// this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
//这段code放在下面的函数里也不能起到,一点窗口的叉子就关闭窗口的作用。
}
-------------------------------------------------------------------
你这段代码没有错,我看了,你把this换成f就可以了.
------解决方案--------------------
楼主的程序简直是一团乱麻啊,你只要显示一个Frame就可以了,怎么new了那么多Frame出来?

还有,你没有搞清楚你是用继承方式还是组合方式。

继承方式的话,就让你的类extends Frame,然后直接在构造方法中addWindowListener(new WindowAdapter() { ... })就可以了。

组合方式的话,不需要extends Frame,但要设置一个Frame类型的成员变量,并在构造函数中初始化它,再对该成员调用addWindowListener(new WindowAdapter() { ... })。

下面分别是我整理的继承方式和组合方式的代码,供你参考:

Java code
// 继承方式使用Frame
import java.awt.*;
import java.awt.event.*;

public class ExGui extends Frame {
    private Button b1;
    private Button b2;
    
    public ExGui() {
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    public static void main(String args[]) {
        ExGui that = new ExGui();
        that.go();
    }

    public void go() {
        setLayout(new FlowLayout(FlowLayout.RIGHT));
        b1 = new Button("Press Me");
        b2 = new Button("Don't Press Me");
        add(b1);
        add(b2);
        setSize(555, 666);
        setVisible(true);
    }

}