关闭窗口时弹对话框,点否就不关闭——的方法

  弹对话框的方法当然是让框架实现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:顾名思义,什么也不干,设置成这个的话不管怎么点叉都关不掉。

原文地址:https://www.cnblogs.com/chihane/p/3512808.html