Java JFrame和JDialog之间有什么区别?

Java JFrame和JDialog之间有什么区别?,java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,JFrame和JDialog之间有什么区别 为什么我们不能使用setDefaultCloseOperation(JDialog.EXIT\u ON\u CLOSE)对于JDialog?JFrame是一个普通窗口,带有普通按钮(可选)和装饰JDialog没有最大化和最小化按钮,通常使用JOptionPane静态方法创建,更适合使它们成为模态(它们会阻塞其他组件,直到它们关闭) 但两者都继承自Windows,所以它们共享很多功能 为什么我们不能使用setDefaultCloseOperation(J

JFrame
JDialog
之间有什么区别


为什么我们不能使用
setDefaultCloseOperation(JDialog.EXIT\u ON\u CLOSE)对于JDialog?

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

但两者都继承自Windows,所以它们共享很多功能

为什么我们不能使用
setDefaultCloseOperation(JDialog.HIDE\u ON\u CLOSE)用于
JDialog

当然可以

张贴说明使用此值时遇到的问题的帖子


但是,您不能对
JDialog
使用
EXIT\u ON\u CLOSE
,因为该值不受支持,这是有意义的,因为
JDialog
是应用程序的“子”或“助手”窗口,由
JFrame
表示。关闭对话框不应关闭应用程序。

您也可以使用
setModal(布尔t)

这仅适用于
JDialog
。用户必须在
JDialog
而不是其他窗口上操作。如果他们想操作所有者窗口,他们必须关闭此
JDialog

有些
JDialog
构造函数具有
owner
参数,该参数可以是
框架
、对话框
窗口
。非空值还使
JDialog
保持在其所有者之上。这是Fortran描述的模态行为的补充。

您对JavaDocs的阅读有何建议?您对屏幕上的两个组件的检查显示了什么?相同的问题:您的权利。我将其编辑为setDefaultCloseOperation(JDialog.Exit_on_CLOSE);这不是问题的答案,是吗?一旦你有了足够的rep,你就可以评论:-)问题是关于差异,所以我发现非常有趣的是,JDialog有能力保持在其父代之上,而不必是模态的。我会使用更新的构造来代替布尔模态API——在代码中有更细粒度的控制和更清晰的意图。