Swing ベースの Java アプリケーションに Swing Application Framework JSR(296) を使用しています。
AboutBox と同様に、@Action の使用法に従い、いくつかの JDialog クラスをプロジェクトに追加しました。
問題は、メイン フレームを閉じても、アプリケーションがまだバックグラウンドで実行されていることです。これを克服するために、メイン アプリケーション クラスの configureWindow() に次のコードを追加しました。
protected void configureWindow(java.awt.Window root) {
root.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// write your code here
Application.getInstance(MyApp.class).exit();
}
});
}
しかし、この変更により、ダイアログ (AboutBox を含む) を閉じるたびに、メイン フレームも閉じます。
アプリケーション全体が終了するのを防ぎ、ダイアログ ボックスを閉じるにはどうすればよいですか?
更新: Swing Application Framework プロジェクトを作成できる NetBeans IDE 7.01 を使用しています。以下に示すように、プロジェクトのスケルトンが生成されます。
MyApp
|--myapp
| |--MyApp.java
| |--MyAppAboutBox.java
| |--MyAppView.java
|
|--myapp.resources
|--MyApp.properties
|--MyAppAboutBox.properties
|--MyAppView.properties
NetBeans IDE では、[ウィンドウ] -> [プロパティ] メニューからアクションを追加できます。
MyApp クラスは、私のメイン クラスである org.jdesktop.application.SingleFrameApplication を拡張します。
MyAppView extends FrameView
これが私の主な見解です。
の実装クラスはパッケージに含まjavax.swing.JDialog
れています。myapp.view