我希望在Java Swing中创建一个JDialog,当它打开时,其父窗口不能被访问(就像在Microsoft Word中打开文件浏览器对话框时一样)。 JDialog类中是否有提供此行为的方法?
JDialog yourdialog = ...
yourdialog.setModal(true);
...
yourdialog.setVisible(true);
JOptionPane
中的静态方法。这些默认会创建模态对话框。JDialog
对象,然后使用它来显示对话框。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);
Adamski和Jan已经给出了正确的答案,但我想确保模态窗口的概念得到解释。
原帖询问了一个阻止访问父级的对话框。这被称为模态对话框(或模态窗口)。维基百科给出了this definition:
在用户界面设计中,模态窗口是一个子窗口,需要用户与之交互,然后才能返回操作父应用程序
因此,“模态”意味着它将阻止父窗口(用户无法与模态窗口以外的任何窗口交互),而“非模态”或“无模式”则意味着子窗口和父窗口将同时可访问。
这是一种普遍存在于GUI框架中的概念,不仅适用于Swing框架。在任何您使用的GUI框架中,您都可以通过查找“modal”属性来找到这种功能。
如何将JDialog锁定在其JFrame父窗口中? 使用JDialog.setModal可以使jdialog像其他应用程序中的对话框一样。在jDialog关闭之前停止所有框架。