【问题标题】:How can I stop my application?如何停止我的申请?
【发布时间】:2010-04-08 14:47:14
【问题描述】:

我有一个使用invokeLater 启动窗口的主线程。我从命令行运行我的应用程序。因此,当应用程序运行时,我看到了窗口,并且我的命令行被应用程序“阻止”了。

我可以通过关闭窗口(因此命令行被畅通)或在命令行中键入Ctrl-C(因此窗口消失)来停止应用程序。

我希望能够通过单击应用程序窗口中的按钮来停止应用程序。我为此使用了setVisible(false)。但这样我只能部分实现目标。我的窗口确实消失了,但命令行仍然被阻止。因此,该软件仍在运行。

好吧,我认为这是因为其他一些线程仍在运行。但是我怎样才能轻松地关闭所有这些线程(就像我手动关闭应用程序窗口一样)。

【问题讨论】:

    标签: java multithreading user-interface terminate


    【解决方案1】:
    System.exit(0);
    

    【讨论】:

    • “点击按钮”会触发一个事件。将此代码放入事件处理程序中。
    • 请记住,这是杀死您的应用程序的一种相当严厉的方式。
    • 你应该给答案,然后:) @PC:没错,但与当前方法 CTRL-C 没有什么不同。
    • 在我阅读原始帖子的每一段中,我的脑海中都在想System.exit, System.exit,一旦我读完这个问题,我认为这是第一个答案,结果就是我的想法: ) +1
    • 戴夫,我会奖励的。 Stackoverflow 写信说我可以在 2 分钟内完成。 :) 当我第一次尝试时,它写信说我需要等待 9 分钟。
    【解决方案2】:

    如果您显示的是 JFrame,您可以告诉它在框架关闭时退出应用程序 - 默认是隐藏框架:

     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    

    如果用户关闭窗口(通常是右上角的 [x] 按钮),这将退出应用程序,此外,您可以有一个退出按钮,其事件处理程序使用 myFrame.dispose(); 关闭窗口

    【讨论】:

      【解决方案3】:

      您必须完成所有线程才能停止您的应用程序。仅仅隐藏 GUI 不会完成 AWT 线程。查看您使用的 GUI 类的 API,例如 dispose-methods。

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-17
          • 1970-01-01
          • 1970-01-01
          • 2020-10-12
          • 1970-01-01
          相关资源
          最近更新 更多