前言:这是我完成的第一个真正的挥杆程序。
我有一个Swing程序,应该有一个JButton退出该程序。该按钮触发this.dispose();。当我单击此JButton时,它 确实 使窗口完全消失,但在调试器中,程序本身仍在运行。
我的主要方法仅包括:
public static void main (String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new StartupGui().setVisible(true); } }); }
我的退出按钮看起来像动作按钮看起来像:
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); }
我也尝试过退出按钮:
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { dispose(); } }); }
在按退出按钮后查看调试器,我看到以下内容(并且仅以下内容):
Daemon Thread [AWT-XAWT] (running) Thread [AWT-Shutdown] (running) Thread [AWT-EventQueue-0] (running) Thread [DestroyJavaVM] (running)
任何人都可以向我指出正确的方向,为什么程序在此之后仍无法关闭?我已经进行了一些谷歌搜索,但到目前为止还没有到任何地方。如果您需要更多信息,请告诉我
谢谢 :)
因为dispose()方法仅释放资源。
该文档有一个
注意: 丢弃Java虚拟机(VM)中的最后一个可显示窗口时,VM 可能会 终止。有关更多信息,请参见 AWT线程问题。
你注意到 5月 ?
上面的链接为您提供有关 自动关机 功能的详细信息。您可以阅读有关此内容的更多信息,也可以通过替换this.dispose()为System.exit(0)
this.dispose()
System.exit(0)