窗体关闭、激活、最小化,等等,都属于Window Event。windowClosed是窗体被关闭后触发的事件;而windowClosing是用户试图关闭窗体时触发的事件。一个是窗体关闭后,一个是窗体关闭前。windowClosing中如果没有程序执行隐藏窗体或释放窗体内存的操作,则窗体关闭的动作将被认为无效。这下知道了吧?

解决方案 »

  1.   

    关闭窗体:
    dispose();
    处理WINDOW_CLOSING消息
    扩展WindowAdapter剪辑类
    重载windowClosing(WindowEvent e)事件
      

  2.   

    http://expert.csdn.net/Expert/topic/1384/1384603.xml?temp=.4639398
      

  3.   

    import java.awt.*;public class test extends Frame{
      public boolean handleEvent(Event evt){
        if (evt.id == Event.WINDOW_DESTROY)//就是这个,WINDOW_DESTROY事件
          System.exit(0);
        return super.handleEvent(evt);
      }  public static void main(String[] args){
        //这里要写成new test(),不要写成new Frame(),不然关不了窗口
        Frame win  = new test(); 
        win.resize(100, 200);
        win.show();
      }
    }
      

  4.   

    CHECK java.awt.event.WindowListener, WindowEvent, WindowAdapter
    public void windowClosing(WindowEvent e) 在用户关闭窗口是触发,但是窗口并不一定关闭,若想关闭在里面调用dispose();若想取消关闭动作,就什么也别干。
    public void windowClosed(WindowEvent e) 是在dispose以后被触发,在里面通常是做退出系统 System.exit(0);不过要提醒注意的是,JFrame里面有一个setDefaultCloseOperation(int)
    int 可选 
    DO_NOTHING_ON_CLOSE 相当于Frame的事件处理,只是出发windowClosing,等用户处理
    HIDE_ON_CLOSE 自动隐藏,非关闭,是JFrame的默认值
    DISPOSE_ON_CLOSE 自动关闭
    EXIT_ON_CLOSE 关闭并退出系统