请问一下addWindowListener(new WindowAdapter()
 {
    public void windowClosing(WindowEvent event)
    {
       Window window = event.getWindow();
       window.dispose();
       System.exit(0);
    }  
 });和public void windowClosing(WindowEvent event)
    {
            System.exit(0);
    }  
有什么区别呢?下面那一句也是关闭窗口啊!不是和上面那一段代码实现一样的效果吗?那么还要
Window window = event.getWindow();
       window.dispose();
这两句有什么意义呢?这上面两句是有什么做用的啊

解决方案 »

  1.   

    手动释放内存就象Socket连接后要用Close();不过个人认为没必要写那麻烦。
      

  2.   

    我个人对DISPOSE()和SYSTEM.EXIT(0)之间的关系看法是。DISPOSE只是关闭窗口。单没有结束进程。而SYSTEM.EXIT(0)是结束整个程序。。也就是说。你如果一个程序有两个窗口那么。用DISPOSE只关闭其中一个窗口,而用SYSTEM.EXIT(0)就会把两个窗口都关闭。
      

  3.   

    3楼讲的比较好!!!DING 了~!!!
      

  4.   

     System.exit(0) 
    结束整个程序的运行
    但关闭某个窗口并不意味着程序结束呀
      

  5.   

    System.exit(0);直接关闭了虚拟机进程
    个人认为第一段代码的window.dispose()完全是多余
    这个dispose()方法的调用反而会减缓窗口关闭速度,虽然你根本察觉不出来
    至于dispose()方法的解释:
    class java.awt.window
    public void dispose()
    释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 
    通过随后调用 pack 或 show 重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态与释放 Window 时这些对象的状态一致(不考虑这些操作之间的其他更改)。
     注:当 Java 虚拟机 (VM) 中最后的可显示窗口被释放后,虚拟机可能会终止。
      

  6.   

    终止方式不一样
    dispose是通过释放资源的方式
    exit是直接关闭虚拟机
    只是对外的表现貌似无差别而已
      

  7.   

    window.dispose();先关闭窗口,释放内存空间
    System.exit(0); 再整个退出系统
    如果你是想退出整个系统 直接写第二句就成