2014-02-22 119 views
-1

我有一個JFrame,我想知道何時關閉按鈕被點擊爲JFrame。當JFrame關閉時,我的整個項目都沒有關閉,所以我想能夠告訴用戶什麼時候關閉那個Frame。當JFrame關閉時

我已經使用像作爲!f.isShowing!m.f.isActive(方法試過),但是當我關閉框架,我希望發生的沒有。

+0

閱讀:http://stackoverflow.com/questions/1234912/how-to-programmatically-close-a-jframe?rq=1 – Stuart

+0

我不不想關閉它,我想知道它是什麼時候用戶關閉它。 – user3341532

+0

要明確一點,當框架關閉時,您是否遇到運行不會結束的問題,還是您想在框架關閉時執行某些操作?因爲在你的問題中都提到了。 – BitNinja

回答

1
import javax.swing.JOptionPane; 
frame.addWindowListener(new java.awt.event.WindowAdapter() { 
    @Override 
    public void windowClosing(java.awt.event.WindowEvent windowEvent) { 
     if (JOptionPane.showConfirmDialog(frame,...) ...) { 
      // ... 
      System.exit(0); 
     } 
    } 
}); 
+2

@ dic19垃圾,System.exit指示JVM以受控和已知方式終止,並且不會終止,直到所有非守護線程也終止。 – MadProgrammer

+0

@MadProgrammer我錯了我的完全Java生活我猜:P – dic19

+0

@ dic19我知道這種感覺;) – MadProgrammer

3

如果你不想做什麼特別當框架關閉時,您可以使用setDefaultCloseOperation方式的轉變,一個JFrame

EXIT_ON_CLOSE 

退出應用程序默認窗口關閉操作。如果一個窗口有 這個設置爲關閉操作,並且在一個小程序中關閉,則可能會拋出SecurityException。建議您僅在應用程序中使用此 。

HIDE_ON_CLOSE 

的隱藏窗口的默認窗口關閉操作

DISPOSE_ON_CLOSE 

的Dispose窗口的默認窗口關閉操作。注意:當Java虛擬機(VM)內的最後一個可顯示窗口被配置爲 時,VM可能會終止。有關更多 信息,請參閱AWT線程問題。

+0

1+,但我猜他真的想要一個模態的JDialog,因爲他想知道什麼時候窗口關閉,不想關閉應用程序。但直到他講得更多,誰知道呢? –

+0

@HovercraftFullOfEels這是我認爲的有點,因此開幕聲明的原因 – MadProgrammer

0

JFrame關閉我的整個項目沒有關閉...

一個常見的原因是,當你宣佈一個JFrame你應該調用JFrame的這種方法,使其關閉當你按下 'X' 按鈕:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);