【问题标题】:Can I terminate a program with System.exit() without closing GUI?我可以在不关闭 GUI 的情况下使用 System.exit() 终止程序吗?
【发布时间】:2014-01-07 15:24:46
【问题描述】:

我有一个基于从文本文件读取的值运行事件的程序。我设置了一个 GUI,它有一个启动按钮来启动正在运行的程序。如果文本文件中有终止事件,那么我使用“System.exit(0);”关闭程序。唯一的问题是我不想关闭 GUI,我只想让程序停止运行。有没有一种简单的方法可以让 GUI 保持打开状态?我有一种感觉,这是一个愚蠢的问题。如果是,请原谅,因为我是编程新手,对 GUI 非常陌生。

【问题讨论】:

  • 如果程序不运行,打开 GUI 的意义何在。你能澄清一下你的要求吗?
  • 您的“程序”启动 GUI,它显示开始按钮,然后启动“其他东西”。你杀死了程序——然后你也杀死了你的 GUI。问:单击“开始”时发生的“其他”是什么?
  • “如果文本文件中有终止事件” - 能否详细说明一下,以便我们更好地了解您的要求
  • @peeskillet - 事件输出到 GUI 中的 JTextArea。如果从文件中读取了 Terminate 事件,那么我希望程序停止并且不再从文件中读取事件。我希望 GUI 保持打开状态,这样我就可以创建一个重新启动按钮来重新启动程序。
  • 在我看来,您将函数误认为是程序。如果您使用return 而不是System.exit(0) 会怎样?

标签: java user-interface terminate


【解决方案1】:

如果你在一个线程上运行你正在做的任何事情,而在另一个线程上运行 gui,只需终止另一个线程。 尝试使您的程序成为 Runnable,然后使用 Executor 运行它,这将是一个简单的解决方案。 例如,您可以从工作线程调用主线程上的方法,以查看它是否应该终止。避免强行终止线程作为一般建议。

【讨论】:

  • 我对线程的经验很少。是否可以从我实例化 GUI 对象的构造函数为 GUI 创建线程: public Controls() { new ControlsGUI(this); }
  • 是的,但是当用户单击 [开始某些操作] 按钮以检查线程启动所需的所有数据是否都存在时,您可能希望这样做。
【解决方案2】:

您的 GUI 是程序本身的一部分。调用 System.exit(0) 将停止 JVM 以及您的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多