JFrame和JDialog有什么区别?

时间:2011-04-05 13:43:54

标签: java swing jframe jdialog

JFrameJDialog之间的区别是什么?

为什么我们不能将setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);用于JDialog?

4 个答案:

答案 0 :(得分:26)

JFrame是一个普通窗口,带有普通按钮(可选)和装饰。另一方面JDialog没有最大化和最小化按钮,并且通常使用JOptionPane静态方法创建,并且更适合使它们成为模态(它们会阻止其他组件直到它们被关闭)。< / p>

但两者都继承自Window,因此它们共享很多功能。

答案 1 :(得分:5)

  

为什么我们无法将setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);用于JDialog

当然可以。

发布展示您在使用此值时遇到的问题的SSCCE

但是你不能将EXIT_ON_CLOSE用于JDialog,因为不支持该值,这是有道理的,因为JDialog是应用程序的“子”或“助手”窗口由JFrame表示。关闭对话框不应该关闭应用程序。

答案 2 :(得分:1)

有些JDialog构造函数带有owner参数,可以是FrameDialogWindow。非空值也会使JDialog保持在其所有者之上。这是Fortran描述的模态行为的补充。

答案 3 :(得分:0)

您还可以使用setModal(boolean t); 这仅适用于JDialog。用户必须在JDialog而非其他窗口上操作。如果他们想要操作所有者窗口,他们必须关闭此JDialog