如何在不杀死JVM的情况下停止Java GUI

问题描述 投票:-1回答:1

我有一个Java控制台应用程序,在用户提供了一定的输入后,它会打开一个位于单独类上的GUI应用程序。我想在关闭GUI后返回控制台,这是通过按下“退出”按钮实现的,用户可以选择执行其他任务或重复执行该任务。我注意到用System.exit(0)杀死系统会杀死整个过程。我尝试使用线程来工作,但是对此我还比较陌生,而且似乎也不起作用。有人可以指出我正确的方向吗?谢谢。

我也尝试过使用frame.dispose()。它确实加载了控制台,并在调用System上的main方法时按预期输出了内容,但不允许我输入其他输入。

btnExit.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
     frame.dispose();
     System.main(null);
 }
});

错误消息:Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException: No line found.

java java-8 jvm windowbuilder
1个回答
0
投票

[如果使用的是Swing,则可以在setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);上调用JFrame,这样当您关闭窗口时,它实际上会关闭它,但是程序将继续运行。如果您仅使用AWT组件,则可以添加一个窗口侦听器并对其进行所需的操作,如下所示:

addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        frame.dispose(); //change "frame" to whatever your Frame is called
        //do more stuff
    }
});

请注意,窗口侦听器也可以在Swing中使用,因此我提供给您的两个选项不是互相排斥的。

© www.soinside.com 2019 - 2024. All rights reserved.