2010-05-12 62 views
2

爲什麼當我單擊x按鈕關閉Java應用程序中的窗口時,只有窗口消失並且應用程序仍在運行。這是最常見的情況嗎?

我已經閱讀了很多次,Java設計者試圖迎合Java行爲,以滿足程序員最常見的需求並節省寶貴的時間等等。當我點擊一個X按鈕時,比關閉應用程序更常見的情況是什麼?

+2

我們又一次滾動發臭的炸彈嗎? – 2010-05-12 10:37:04

+0

@Stephen不問問題。有什麼不對嗎?如果你實際上沒有回答你爲什麼要添加5p?你也知道,這不是討論板或論壇。是問答。所以你要麼回答,要麼說或不說。 – 2010-05-12 10:43:22

回答

8

不管是什麼原因,只要你意識到它是如何工作的以及如何使你的程序按照你想要的方式工作,真的沒有關係。

雖然猜測:一個應用程序可以有幾個窗口,當其中一個關閉時退出應用程序聽起來不是很聰明。跟蹤有多少個窗口是打開/關閉/隱藏/尚未顯示的,因此當最後一個窗口關閉時能夠退出的窗口可能是太多工作/太多邊緣案例等等。因此,這取決於我們,程序員,當我們希望我們的應用程序退出。

在任何情況下,如果要在一個窗口(JFrame的)關閉您的應用程序退出,你可以告訴它這樣做:

myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
+3

+1。 – 2010-05-12 10:52:27

7

許多應用程序一次打開多個窗口,關閉一個窗口時絕對不應關閉整個應用程序。

此外,大多數應用程序在退出時想要做的比簡單的System.exit(0);多一點。他們可能想讓用戶保存一些文件(或自動保存),他們可能想要清理一些臨時文件或通知某些遠程主機關閉它們或類似的東西。

實際上,關閉窗口的唯一效果不太可能會結束JVM。

+0

再次,如果我想做一些事情,我應該做出決定,這是如果我有其他任務要執行,我應該親自照顧它並定義這種期望的行爲。 – 2010-05-12 10:41:34

+5

@知道:呃...是的,?這正是當前狀態所提供的:它具有一些已定義的默認行爲(我只是認爲它很有用),如果您想要任何不同或除此之外的內容,那麼您將不得不編寫該代碼。 – 2010-05-12 10:51:34

+0

我現在同意。對於第一句,+1 – 2010-05-12 14:43:04

0
myJFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

處置幾乎總是首選。如果您明確說出EXIT_ON_CLOSE,並且您想要顯示多個窗口,則需要修改代碼以使用DISPOSE_ON_CLOSE。當然,沒有什麼大不了的,似乎是一個更好的選擇。

在我看來,DISPOSE_ON_CLOSE應該是默認的,而不是HIDE_ON_CLOSE。哦,那就是我們所擁有的。 EXIT_ON_CLOSE可能應該避免出於同樣的原因,即應該避免在窗口監聽器中調用System.exit(0)(儘管它本身沒有任何問題,它不是非常有前途的靈活性)。

更好的是,將WindowListener附加到框架並將默認設置設置爲接近JFrame.DO_NOTHING_ON_CLOSE幾乎總是首選。這樣,您就可以控制應用程序關閉的時間,包括提示用戶保存任何工作等。

相關問題