关闭窗口时弹对话框,点否就不关闭——的方法
弹对话框的方法当然是让框架实现WindowListener,注意不是WindowsListener,然后重写windowClosing()方法,让窗口在正在关闭的时候弹一个窗口。
一个窗口:
int answer = JOptionPane.showConfirmDialog(this, "blah", "blah", JOptionPane.YES_NO_OPTION);
注意对话框是要静态引用的,不需要new一个JOptionPane出来。
后面用answer来if一下就不用说了,都是静态属性,YES_OPTION,NO_OPTION,CANCEL_OPTION,之类之类的。
然后Yes就System.exit(0)。
不过No,或者说else要单独说一下,单纯return的话因为框架已经在关闭中了,关掉对话框框架还是会继续关闭,所以我们要打断它。
打断狗腿:
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
半路给它set一下。
据我观察,直接在框架初始化的时候设置是没用的,大概这个方法是一次性的吧。
于是顺道介绍一下setDefaultCloseOperation()这个方法。
参数里面有几个选项可选:
1. EXIT_ON_CLOSE:关闭时调用System.exit(),整个关闭虚拟机,也就是说整个进程都结束掉了,应该用在最外面的,也就是主框架上。
2. HIDE_ON_CLOSE:隐藏框架,依然保留在内存里,没实际使用过,大概在别处setVisible()一下就可以让它显示出来。
3. DISPOSE_ON_CLOSE:处置(?)框架,取消框架显示的同时释放掉框架所占资源,和HIDE的区别是能释放内存,进程还会继续运行,可以用于子窗口。
4. DO_NOTHING_ON_CLOSE:顾名思义,什么也不干,设置成这个的话不管怎么点叉都关不掉。