我创建了一个简单的swing程序,我在其中创建了一个jframe,当我们关闭jframe时它被关闭但cmd上没有提示,所以我们使用ctrl + c来终止程序。但是当我使用javaw时运行程序&关闭jframe,在cmd上发生提示而不使用ctrl + c。但我想知道它是如何运作的。
答案 0 :(得分:3)
java
—the Java application launcher:
javaw
命令与java相同,只是javaw
没有关联的控制台窗口。如果不希望显示命令提示符窗口,请使用javaw
。如果失败,javaw
启动器会显示一个包含错误信息的窗口。
答案 1 :(得分:0)
它特定于Windows。 Windows上有两种类型的应用程序:console而不是。 javaw
是java
的非控制台版本,这就是您不会看到控制台出现的原因。如果您的应用程序是图形应用程序,那么您应该使用javaw
。
答案 2 :(得分:0)
使用javaw启动程序不会显示java控制台,而从java开始将显示java控制台。
但是,我建议您的程序应该很好地处理应用程序退出:
// option 1
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// option 2
frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// do something here and then
System.exit(0);
}
});
答案 3 :(得分:0)
尝试为JFrame Example设置适当的Closing选项:
// Create a frame
JFrame frame = new JFrame();
// Get default close operation
int op = frame.getDefaultCloseOperation(); // HIDE_ON_CLOSE
// Set to exit on close
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
您也可以使用自己的函数覆盖WindowListener 关闭动作,然后是System.exit(0)
答案 4 :(得分:0)
javaw.exe专门用于Windows平台(w代表windows)。如果我们使用java.exe启动java应用程序,则会有与之关联的控制台窗口 - 如果关闭控制台应用程序也会关闭。 javaw.exe是JVM启动程序,它在没有控制台的情况下在后台运行。
当您在java应用程序中关闭jFrame时它不会退出应用程序 - 您应该捕获应用程序主窗口(jFrame)的窗口关闭事件并在需要清理后退出应用程序 - 此行为在java.exe中与以及javaw.exe。当您使用java.exe启动应用程序时,控制台会显示应用程序状态,即使您关闭了jframe,也可以看出该应用程序没有退出。在javaw.exe的情况下没有控制台 - 如果你关闭GUI应用程序的所有窗口,可能会错误的是应用程序已经退出 - 而应用程序在后台作为javaw.exe进程运行。要通知用户(开发人员)有关此问题,请在javaw.exe
的情况下提示