2012-06-19 70 views
3

我有一個實例化調用自定義JDialog(Login)的JFrame。 如果登錄成功,我希望該jFrame可見。如果用戶在該登錄對話框上按下escape/cancel,則應關閉整個應用程序。Swing-取消對話框時關閉整個應用程序

我怎麼可以這樣做......

目前,如果我處理對話框中的JFrame變得可見。

+1

還不如就叫'System.exit(-1);' – maksimov

+0

你爲什麼不使應用程序,以顯示登錄只有第一個對話框,並如果它已成功登錄啓動JFrame? –

回答

5

假設你有通過frame變量訪問您JFrame,你可以簡單地調用:

frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)); 

這可能是比調用一個System.exit(),因爲它將使你能夠運行一些清理代碼,如果你已經註冊好一個關閉窗口的窗口。

+0

+1有一個相關的例子[這裏](http://stackoverflow.com/a/8336218/230513)。 – trashgod

3

您可以覆蓋對話框關閉事件:

dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 

dialog.addWindowListener(new WindowAdapter() { 

    public void windowClosing(WindowEvent we) { 
    //Release you source, close all your frames or call a brutal System.exit(0); 
    } 
}); 
相關問題