【问题标题】:What is the difference between a JFrame and a JDialog?JFrame 和 JDialog 有什么区别?
【发布时间】:2011-07-29 23:57:36
【问题描述】:

JFrameJDialog 有什么区别?

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

【问题讨论】:

标签: java swing jframe jdialog


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    当然可以。

    发布您的SSCCE,证明您在使用此值时遇到的问题。

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

    【讨论】:

    • 你的权利。我将其编辑为 setDefaultCloseOperation(JDialog.Exit_ON_CLOSE);
    【解决方案3】:

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

    【讨论】:

    • 我会使用较新的 ModalityType 构造来代替布尔模态 API——代码中的粒度控制更精细,意图更清晰。
    【解决方案4】:

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

    【讨论】:

    • 不是问题的答案,是吗?一旦你有足够的代表,你就可以发表评论:-)
    • 问题是关于差异的,所以我发现非常有趣的是,JDialog 能够保持在其父级之上而不必是模态的。
    猜你喜欢
    • 2022-01-23
    • 2018-10-17
    • 2013-08-30
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    相关资源
    最近更新 更多