3

我想在 Java Swing 中创建一个 JDialog,当它打开时,无法访问其父窗口(就像在 Microsoft Word 中打开文件资源管理器对话框时一样)。JDialog 类中是否有提供这种行为的方法?

4

4 回答 4

6

在设置对话框可见之前使用 JDialog.setModal(true)

JDialog yourdialog = ...

yourdialog.setModal(true);
...

yourdialog.setVisible(true);
于 2010-09-14T15:58:24.453 回答
3

你有两个选择:

使用中的静态方法JOptionPane。默认情况下,这些将创建模式对话框:

Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JOptionPane.showMessageDialog(parentWindow, "Hello, World); // Create modal dialog aligned with parent window.

显式创建JDialog

Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JDialog dlg = new JDialog(parentWindow, ModalityType.APPLICATION_MODAL);

第一个选项要简单得多,我更喜欢它,尤其是模式对话框。

于 2010-09-14T16:00:53.177 回答
1

Adamski 和 Jan 都已经有了正确的答案,但我只想确保解释了模态窗口的概念。

OP询问了一个阻止访问父级的对话框。这称为模态对话框(或模态窗口)。维基百科给出了这个定义

在用户界面设计中,模态窗口是一个子窗口,需要用户与其交互才能返回操作父应用程序

因此,“模态”意味着它将阻止父窗口(用户不​​能与模态窗口之外的任何窗口交互),而“非模态”或“无模态”意味着子窗口和父窗口可以同时访问.

这是一个普遍存在于 GUI 框架中的概念,而不仅仅是 Swing 框架。modal在您使用的任何 GUI 框架中,您都可以通过查找属性来找到这种功能。

于 2012-06-11T14:58:00.427 回答
0

如何将 JDialog 锁定在他的 JFrame Parent 中?确实,使用 JDialog.setModal 能够使 jdialog 就像其他应用程序上的对话框一样。在 jDialog 关闭之前停止所有帧

于 2012-06-11T09:45:54.790 回答