2010-10-28 19 views
1

我想寫使用NetBeans GUI應用程序,和我越來越累了..Java jdesktop FrameView的windowClosing事件?

我構建的「Java桌面應用程序」使用NetBeans。它創建了一個org.jdesktop.application.FrameView後代的主窗體。我想知道什麼是正確的方式來添加一些代碼,當窗體關閉時執行。

我目前的嘗試到目前爲止是在構造函數中使用getFrame().addWindowListener添加一個WindowAdapter對象,該對象不起作用。因爲在框架尚未構建時您無法撥打getFrame。我不能將它看作是GUI構建器中的某個事件。

回答

3

NetBeans IDE 6.9.1中提供的Java桌面應用程序僅用於歷史目的,不建議用於項目。當我們嘗試使用Java Desktop Application選項創建新項目時,NetBeans IDE 6.9.1也顯示此警告。

alt text

既然讓我來回答你的問題假設你還在使用Swing應用程序框架,你想一個的windowClosing監聽器添加到主窗口。

當你創建一個Java桌面應用程序你會得到三個類(假設你輸入DesktopApplication1作爲應用程序的名稱):

  1. DesktopApplication1.java
  2. DesktopApplication1AboutBox.java
  3. DesktopApplication1View.java

要添加窗口關閉偵聽器,請將代碼寫入類DesktopApplication1的configureWindow方法中,如下所示:

@Override protected void configureWindow(java.awt.Window root) { 

    root.addWindowListener(new WindowAdapter() { 

     @Override 
     public void windowClosing(WindowEvent e) { 
      // write your code here 
      System.out.println("Window Closing"); 
     } 

    }); 
} 

與問候
圖沙·喬希,那格浦爾

+0

非常感謝。我從來沒有注意到swing應用程序框架的棄用。 – 2010-10-29 22:13:53

2

這僅僅是一個除了圖莎爾的答案。

如果你想提供窗關閉一個確認對話框,那麼你必須通過添加ExitListenerstartup method,使該canExit方法的返回false更改默認的退出行爲:

@Override 
protected void startup() { 
    addExitListener(new ExitListener() { 
     public boolean canExit(EventObject event) { 
      return false; 
     } 
     public void willExit(EventObject event) { 
     } 
    }); 
    show(new DesktopApplication1View(this)); 
}