2011-04-05 54 views
26

JFrameJDialog有什麼區別?JFrame和JDialog有什麼區別?

爲什麼我們不能使用setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);作爲JDialog?

+2

您對JavaDocs的建議有何看法?您對屏幕上兩個組件的檢查結果是什麼? – 2011-04-05 13:54:40

回答

26

JFrame是一個正常的窗口及其正常的按鈕(可選)和裝飾。另一方面JDialog沒有最大化和最小化按鈕,並且通常使用靜態方法創建,並且更適合使它們變爲模態(它們在關閉之前阻止其他組件)。

但都從窗口繼承,所以他們共享很多功能。

5

爲什麼我們不能使用setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);JDialog

當然可以。

發佈您的SSCCE,說明您在使用此值時遇到的問題。

但是因爲該值是不支持這是有道理的,因爲一個JDialog是一個「孩子」或爲您的應用程序,它由JFrame代表的「幫手」窗口中,你不能使用EXIT_ON_CLOSEJDialog。關閉對話框不應該關閉應用程序。

+0

您的權利。我將它編輯爲** setDefaultCloseOperation(JDialog.Exit_ON_CLOSE); ** – 2011-04-05 18:11:50

0

您也可以使用setModal(boolean t); 這隻適用於JDialog。用戶必須在其他窗口上操作JDialog。如果他們想操作所有者窗口,他們必須關閉這個JDialog

+0

我會使用更新的[ModalityType](http://docs.oracle.com/javase/8/docs/api/java/ awt/Dialog.ModalityType.html)構造代替布爾模式API--更精細的紋理控制和更清晰的代碼。 – gerardw 2015-07-21 16:38:24

1

有一些JDialog構造函數與owner參數可以是FrameDialogWindow。非空值也使得JDialog保持在他的所有者之上。這是Fortran描述的模態行爲的補充。

+1

不是問題的答案,是嗎?一旦你有足夠的代表,你可以發表評論:-) – kleopatra 2013-08-12 08:21:00

+0

問題是關於差異,所以我覺得非常有趣的一點是,JDialog有能力保持在父代之上而不必是模態。 – lqbweb 2014-10-24 11:02:27