为setDefaultCloseOperation创建自定义操作?

我想让我的Java应用程序在按下“关闭”十字按钮时调用我自己的自定义函数。 据我所知,由于setDefaultCloseOperation根本没有重载,因此可能没办法。

知道如何实现这一目标吗?

也许是这一个,但在此之前阅读由Howard发布的WindowListener教程,有一些/另一个选项

 WindowListener exitListener = new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { int confirm = JOptionPane.showOptionDialog( null, "Are You Sure to Close Application?", "Exit Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if (confirm == 0) { System.exit(0); } } }; frame.addWindowListener(exitListener); 

以上所有建议都是正确的,因为您需要使用WindowListener。

然而,所有的答案都是不完整的,因为他们忘了提到你可能还想添加:

 frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(...); 

这将允许您的代码完全控制窗口关闭过程,因为窗口不会自动关闭,除非您告诉它(通常通过在框架上使用dispose()方法)。 这允许您提示用户确认是否关闭窗口。

关闭应用程序有一个简单的API,允许您创建一个在窗口关闭时执行的简单Action。 它为您管理关闭操作和窗口侦听器代码。

您可以为框架添加窗口侦听器:

 frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { onExit(); } }); ... public void onExit() { System.err.println("Exit"); System.exit(0); } 

您可以向框架添加WindowListener (请参阅此处 )。