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