我有一个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.
[如果使用的是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中使用,因此我提供给您的两个选项不是互相排斥的。