我想在Java Swing中创建一个JDialog,当它打开时,无法访问其父窗口(就像在Microsoft Word中打开文件浏览器对话框一样)。 JDialog类中是否有提供此行为的方法?
答案 0 :(得分:6)
在设置对话框可见
之前使用JDialog.setModal(true)JDialog yourdialog = ...
yourdialog.setModal(true);
...
yourdialog.setVisible(true);
答案 1 :(得分: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);
第一个选项更简单,我更倾向于使用模态对话框。
答案 2 :(得分:1)
Adamski和Jan都已经有了正确的答案,但我想确保解释模态窗口的概念。
OP询问了阻止访问父级的对话框。这称为模态对话框(或模态窗口)。维基百科给出this definition:
在用户界面设计中,模态窗口是一个子窗口,要求用户在返回操作父应用程序之前与其进行交互
因此,“模态”意味着它将阻止父窗口(用户无法与模态窗口之外的任何窗口进行交互),而“非模态”或“无模式”意味着可以访问子窗口和父窗口同时。
这是一个概念,通常存在于GUI框架中,而不仅仅是Swing框架。在您使用的任何GUI框架中,您可以通过查找modal
属性来找到此类功能。
答案 3 :(得分:0)
如何在他的JFrame Parent中锁定JDialog? 确实,使用JDialog.setModal能够使jdialog像其他应用程序上的对话框一样。停止所有框架bofore jDialog关闭