用swing写的一个程序,在正常情况下可以调用退出程序,所谓就正常 情况就是,正确的操作:比如:自己点击关闭按钮,确定,然后程序退出,这样的话可以正常调用,退出程序,但是在某些不正常的情况下怎么让程序调用退出程序啊,比如:程序没有关闭,电脑关机了。。这样,程序就不回去调用关闭程序了,怎么让程序在这些不正常的情况下也去调用成学的关闭程序啊?

解决方案 »

  1.   

    在 main函数里! 
      用当前的窗口对象调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);就可以正常的关闭了!
      

  2.   

    是啊我现在正在考虑。。特别是用的通讯协议是tcp更要命。。一个出错。。和他有联系的估计的全挂
      

  3.   

    首先,像电脑断电这些事情Swing肯定是没法处理的,这个方向就不要想了。但是电脑关机的话,Swing程序应该会执行退出操作吧。不是很清楚,反正能执行就执行了,不能执行也是没办法的。这个方向就不要瞎使劲了,没用。看楼主的意思好像是要在退出的时候处理一些事情,楼主可以把需要处理的事情说一下看看有没有可能通过下次启动程序的时候再次处理。比如很多软件都可以知道上次软件退出是以非正常方式退出的,启动的时候会提示给用户。如果说楼主的软件需要在退出的时候清理资源,那么可以在程序启动的时候就create一个文件,程序正常退出就把文件删了,那么程序启动的时候如果发现那个文件还存在,就说明上次是非正常退出的。然后可以做一些补救工作。
      

  4.   

    楼主的原话是:
    =================================
    比如:程序没有关闭,电脑关机了。。
    =================================
    可大部分人都理解成了断电,没办法,理解差异。
    当word没关闭的时候,你点击关机,word会自动提示你保存么,
    如果不会,100%的用户(当然也包括你)会骂微软做的垃圾系统?
      

  5.   

    我的意思是当你编辑一个word文件而并没有保存,此时突然断电了(或者其他非正常情况下退出,那么当你再打开的时候word就会给你一个是否恢复的提示,而且打开word文件的时候也确实会生成一个文件,原理就像9楼说的那样,我所学习的是9楼说的原理,而并非是楼主提出的问题.
    就像你说的那样"没办法,理解差异。".
      

  6.   


    QQ是这么做的吗?我截过QQ的包,它好像是有一个心跳,每隔多长时间就会向服务端发一个信号。
    告诉我在线,你要是监控下QQ就会发现,它一直在向服务端发送包。
    所以你要是常用QQ的话会发现,当你的好友已经下线的时候,你不是马上看到对方的QQ灭掉,而是有一个小小的延迟。
    最好的办法是把腾讯的人拉来拷问下 :-)
      

  7.   

    正常关机Swing应该会正常退出,但如果断电,那只能做好数据恢复的准备,使数据能够在下次启动时从异常中恢复正常才是应该首先要做的事。