JDialog在它的JFrame父级前面

时间:2010-09-14 15:52:51

标签: java swing jdialog

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

4 个答案:

答案 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关闭