当前位置: 代码迷 >> J2SE >> 求教awt关闭窗口的有关问题
  详细解决方案

求教awt关闭窗口的有关问题

热度:2349   发布时间:2013-02-25 00:00:00.0
求教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
// 继承方式使用Frameimport 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);    }}
  相关解决方案