/*
2008年11月1日15:01:44
功能:生成一个"退出"按钮,一点击它,就关闭整个窗口!
*/
import java.awt.*;
import java.awt.event.*;public class TestFrame implements ActionListener
{
Frame f = new Frame("嘿嘿"); public static void main(String[] args)
{
TestFrame tf = new TestFrame(); Button bt = new Button("退出!");
tf.f.add(bt);
tf.f.pack();
tf.f.setVisible(true);

bt.addActionListener(tf); //为什么改为bt.addActionListener(new TestFrame()); 点击"退出"按钮也能关闭整个屏幕,
//我认为tf和 再次new TestFrame()的对象很明显不是一个对象,我们需要的是操作tf对象中的f成员(因为整个窗口是tf对象
                           //设计出来的嘛!),即27和28行的f应该是tf对象中的成员,而不应该是重新new出来的TestFrame对象中的f成员
//如果我推理正确的话,那把bt.addActionListener(tf);改为bt.addActionListener(new TestFrame()); 应该点击"退出"
                        //按钮时没法关闭整个屏幕,才对啊
//但是运行发现窗口的确关闭了,为什么 请诸位高手指教! 先谢谢啦!
} public void actionPerformed(ActionEvent e)
{
f.setVisible(false); //27行
f.dispose();  //28行
System.exit(0);
}
}

解决方案 »

  1.   


    import java.awt.*;
    import java.awt.event.*;public class TestFrame implements ActionListener
    {
        Frame f = new Frame("嘿嘿");    public static void main(String[] args)
        {
            TestFrame tf = new TestFrame();        Button bt = new Button("退出!");
            tf.f.add(bt);
            tf.f.pack();
            tf.f.setVisible(true);
            
            bt.addActionListener(new TestFrame());
        }    public void actionPerformed(ActionEvent e)
        {
            f.setVisible(false); //27行
            f.dispose();  //28行
            //System.exit(0);   这个是终止当前正在运行的 Java 虚拟机  注释掉 你再试试
        }
    }
      

  2.   


    import java.awt.*;
    import java.awt.event.*;public class TestFrame1 implements ActionListener
    {
        Frame f = new Frame("嘿嘿");    public static void main(String[] args)
        {
            TestFrame1 tf = new TestFrame1();        Button bt = new Button("退出!");
            tf.f.add(bt);
            tf.f.pack();
            tf.f.setVisible(true);
            
            bt.addActionListener(tf);  //的确,把tf改为new TestFrame1() 运行后点退出按钮,就无法退出整个窗口了  
        }    public void actionPerformed(ActionEvent e)
        {
            f.setVisible(false); //27行
            f.dispose();  //28行
            //System.exit(0);   这个是终止当前正在运行的 Java 虚拟机  注释掉 你再试试
        }
    }
    谢谢您 太谢谢你啦 非常之感谢
    O(∩_∩)O哈哈~