javaw在Swing上下文中的功能是什么?

javaw在Swing上下文中的功能是什么?,java,swing,Java,Swing,我创建了一个简单的swing程序,其中我创建了一个jframe,当我们关闭jframe时,它是关闭的,但是cmd上没有提示,所以我们使用ctrl+c终止程序。但是当我使用javaw运行程序并关闭jframe时,提示在cmd上出现,而不使用ctrl+c。但是我想知道它是如何工作的。: javaw命令与java相同,只是javaw没有关联的控制台窗口。如果不希望显示命令提示窗口,请使用javaw。如果失败,javaw启动器将显示一个包含错误信息的窗口 这是针对Windows的。Windows上有两种

我创建了一个简单的swing程序,其中我创建了一个jframe,当我们关闭jframe时,它是关闭的,但是cmd上没有提示,所以我们使用ctrl+c终止程序。但是当我使用javaw运行程序并关闭jframe时,提示在cmd上出现,而不使用ctrl+c。但是我想知道它是如何工作的。

:

javaw
命令与java相同,只是
javaw
没有关联的控制台窗口。如果不希望显示命令提示窗口,请使用
javaw
。如果失败,
javaw
启动器将显示一个包含错误信息的窗口


这是针对Windows的。Windows上有两种类型的应用程序:控制台和非控制台
javaw
java
的非控制台版本,这就是为什么您看不到控制台出现的原因。如果您的应用程序是图形化的,那么您应该使用
javaw

用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);
  }
});

尝试为JFrame设置适当的关闭选项:

您也可以使用自己调用的函数覆盖WindowListener
关闭操作,然后是System.exit(0)

javaw.exe专门用于Windows平台(w代表Windows)。如果我们使用java.exe启动java应用程序,就会有一个与之相关联的控制台窗口——如果您关闭控制台应用程序,它也会关闭。javaw.exe是在后台运行的JVM启动器,没有控制台

当您在java应用程序中关闭jFrame时,它不会退出应用程序-您应该捕获应用程序主窗口(jFrame)的窗口关闭事件,并在需要的清理后退出应用程序-此行为在java.exe和javaw.exe中是相同的。当您使用java.exe启动应用程序时,控制台将显示应用程序状态,即使关闭jframe,您也可以确定应用程序未退出。对于javaw.exe,当应用程序作为javaw.exe进程在后台运行时,没有控制台-如果关闭GUI应用程序的所有窗口,可能会误认为应用程序已退出。要通知用户(开发人员),javaw.exe会出现提示

// 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);