2014-04-10 82 views
-1

我擁有類MainFrame的代碼,而this是一個大型機對象。所以這是我的問題。當我做this.setDefaultCloseOperation(DISPOSE_ON_CLOSE)時,它關閉了對話框,但不是應用程序。我知道我應該使用EXIT_ON_CLOSE,但只適用於JFrame,而不是MainFrame對象。我已經嘗試使用System.exit(0)解決方法,但它們都在錯誤的時間退出,或者一起失敗。無論如何,我可以訪問框架角落的「X」按鈕,並將其設置爲在按下時執行特定操作?使用對話框使用「setDefaultCloseOperation」退出應用程序

+1

顯示一些代碼。你的'MainFrame'類是怎麼樣的? – stevecross

+0

如果你擴展一個'JDialog':嘗試'JDialog.EXIT_ON_CLOSE'。 – stevecross

+1

* ....訪問框架角落的「X」按鈕* YES,['JFrame#addWindowListener'](http://docs.oracle.com/javase/tutorial/uiswing/events/windowlistener.html ),見['this'](http://stackoverflow.com/questions/7191330/closing-a-java-program-properly-when-jdialog-is-the-main-window)鏈接也 – Azad

回答

0

Azad的評論工作!按照描述轉到鏈接。

編輯:更好的是,讓我在這裏發佈正確的想法,以防萬一這個問題消失。

dialog.addWindowListener(new WindowAdapter() { 
@Override public void windowClosed(WindowEvent e) { 
    System.exit(0); 
    } 
}); 

其中對話框是您的所有信息的JDialog。我建議在您的JDialog定義和使用的方法結束時發佈它。

+1

爲什麼不直接寫'dialog.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE)'? – stevecross

+0

JDialog必須是「DISPOSE_ON_CLOSE」。只有JFrame可以執行EXIT_ON_CLOSE。 –

0

它關閉了對話框,但沒有關閉應用程序。

你爲什麼試圖從對話框中退出應用程序?應用程序只能關閉其JFrame。

有無論如何,我可以訪問框架角落的「X」按鈕,並設置它,以便當它被按下時,它會執行某些操作?

請參閱Closing an Application關於主題的想法以及代碼示例。

+0

因爲當我嘗試將它投入到JFrame中時,我變得瘋狂,格式錯誤的GUI在JDialog中是完美的。 –

+0

@ user3010468,JFrame或JDialog中的佈局是相同的。你的代碼是問題,而不是JFrame。這就是爲什麼您總是通過向面板添加組件來創建GUI,然後將面板添加到框架的原因。我建議你修復你的代碼。 – camickr

相關問題