我正在爲基於Swing的Java應用程序使用Swing應用程序框架JSR(296)。在Swing應用程序框架中關閉窗口
與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中允許從窗口 - >屬性菜單添加操作。
MyApp類擴展了org.jdesktop.application.SingleFrameApplication這是我的主類。
MyAppView extends FrameView
這是我的主要觀點。
執行類javax.swing.JDialog
在myapp.view
包中。
你可能想看看這個:http://www.jroller.com/tackline/entry/closing_dialogs_on_escape,看看他如何關閉對話框。 – 2012-07-06 13:05:54
謝謝,在這裏我想,我有一個org.jdesktop.application.SingleFrameApplication – JoeYo 2012-07-06 15:22:44
hmm .. configuerWindow()的執行問題。沒有看到sscce沒有太多可行的(注意:獨立包括Netbeans的依賴:-) - 關閉主應該默認關閉所有相關的/次要的窗口/對話框,不需要手動操作。 – kleopatra 2012-07-07 09:35:35