JFrame
和JDialog
之间的区别是什么?
为什么我们不能将setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
用于JDialog?
答案 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
参数,可以是Frame
,Dialog
或Window
。非空值也会使JDialog
保持在其所有者之上。这是Fortran描述的模态行为的补充。
答案 3 :(得分:0)
您还可以使用setModal(boolean t);
这仅适用于JDialog
。用户必须在JDialog
而非其他窗口上操作。如果他们想要操作所有者窗口,他们必须关闭此JDialog
。