我正在为基于 Swing 的 Java 应用程序使用 Swing 应用程序框架 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 应用程序框架项目的 NetBeans IDE 7.01。它会生成一个项目骨架,如下所示:
MyApp
|--myapp
| |--MyApp.java
| |--MyAppAboutBox.java
| |--MyAppView.java
|
|--myapp.resources
|--MyApp.properties
|--MyAppAboutBox.properties
|--MyAppView.properties
NetBeans IDE 允许从Window->Properties 菜单添加操作。
MyApp 类扩展了我的主类 org.jdesktop.application.SingleFrameApplication。
MyAppView extends FrameView
这是我的主要观点。
的实现类javax.swing.JDialog
在myapp.view
包中。