JFrame 和 JDialog 有什么区别?

发布于 2024-10-31 03:18:24 字数 150 浏览 2 评论 0原文

JFrameJDialog 之间有什么区别?

为什么我们不能对 JDialog 使用 setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);

What is the difference between a JFrame and a JDialog?

Why can't we use setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); for a JDialog?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蝶…霜飞 2024-11-07 03:18:24

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

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

JFrame is a normal window with its normal buttons (optionally) and decorations. JDialog on the other side does not have a maximize and minimize buttons and usually are created with JOptionPane static methods, and are better fit to make them modal (they block other components until they are closed).

But both inherit from Window, so they share much functionality.

太阳公公是暖光 2024-11-07 03:18:24

为什么我们不能对 JDialog 使用 setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);

当然可以。

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

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

Why we can't use setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); for JDialog?

Sure you can.

Post your SSCCE that demonstrates the problem you are having when using this value.

However you can't use EXIT_ON_CLOSE for a JDialog because that value is not supported which makes sense since a JDialog is a "child" or "helper" window for your application which is represented by a JFrame. Closing a dialog should not close the application.

雾里花 2024-11-07 03:18:24

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

There are some JDialog constructors with a owner parameter which can be a Frame, a Dialog or a Window. A non-null value also makes the JDialog stay above his owner. This is complementary of the modal behavior described by Fortran.

坏尐絯℡ 2024-11-07 03:18:24

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

You can also use setModal(boolean t);
This only works on JDialog. User must operate on JDialog not other window. If they wanna operate owner windows, they must shut down this JDialog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文