- 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); }}