jframeを作成する単純なswingプログラムを作成します。jframeを閉じると閉じますが、cmdにプロンプトが表示されないため、ctrl + cを使用してプログラムを終了します。ただし、javawを使用してプログラムを実行する場合&jframeを閉じると、ctrl + cを使用せずにcmdでプロンプトが表示されますが、どのように機能しているか知りたいです。
5 に答える
javaw
コマンドはjavaと同じですが、コンソールウィンドウが関連付けられていない点がjavaw
異なります。javaw
コマンドプロンプトウィンドウを表示したくない場合に使用します。javaw
ランチャーが失敗すると、エラー情報を示すウィンドウが表示されます。
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) を続けることもできます。
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 の場合はプロンプトがあります。
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);
}
});
これは Windows 専用です。Windows には、コンソールと非コンソールの 2 種類のアプリケーションがあります。javaw
の非コンソール バージョンでjava
あるため、コンソールが表示されません。アプリケーションがグラフィカルなものである場合は、javaw
.