我有一个主线程,我使用invokeLater
启动一个窗口。我从命令行运行我的应用程序。因此,当应用程序运行时,我看到窗口,我的命令行被应用程序“阻止”。
我可以通过关闭窗口(因此命令行被解除阻塞)或在命令行中键入Ctrl-C
来停止应用程序(因此窗口消失)。
我希望能够通过单击应用程序窗口中的按钮来停止应用程序。我使用了setVisible(false)
。但通过这种方式,我只能部分地实现目标。我的窗口确实消失但命令行仍然被阻止。因此,该软件仍在运行。
好吧,我认为这是因为其他一些线程仍在运行。但是如何轻松地关闭所有这些线程(就像我通过手动关闭应用程序的窗口一样)。
答案 0 :(得分:4)
System.exit(0);
答案 1 :(得分:1)
如果它是你正在显示的JFrame,你可以告诉它在框架关闭时退出应用程序 - 默认是隐藏框架:
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果用户关闭窗口(经常右上角[x]按钮),这将退出应用程序,此外你可以有一个退出按钮,其事件处理程序使用myFrame.dispose();
关闭窗口
答案 2 :(得分:0)
您必须完成所有线程才能停止申请。只是隐藏GUI将无法完成AWT-Thread。查看您使用的GUI类的API,如dispose-methods。
答案 3 :(得分:0)