1

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

4

5 回答 5

3

java— Java 应用程序启动器

javaw命令与 java 相同,只是javaw没有关联的控制台窗口。javaw当您不想显示命令提示符窗口时使用。如果javaw启动失败,启动器会显示一个带有错误信息的窗口。

于 2012-09-12T17:30:56.910 回答
0

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

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

于 2012-09-12T17:38:42.477 回答
0

javaw.exe 专门用于 Windows 平台(w 代表 Windows)。如果我们使用 java.exe 启动 java 应用程序,则会有与之关联的控制台窗口 - 如果您关闭控制台应用程序也会关闭。javaw.exe 是 JVM 启动器,无需控制台即可在后台运行。

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

于 2012-09-12T17:40:41.130 回答
0

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

于 2012-09-12T17:32:04.620 回答
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);
  }
});
于 2012-09-12T17:34:21.530 回答