在看到模态JDialog时访问无模JFrame?

时间:2018-12-24 12:14:31

标签: java swing jframe jdialog

在模态JDialog可见时是否可以访问无模JFrame?

我有一个显示我的日志行的JFrame。当我显示模式JDialog(例如登录)时,用户无法单击JFrame。

JFrame不是JDialog的父级/所有者。

JFrame是创建的第一个JFrame。

请注意,当我在JDialog中执行某项操作导致将日志行添加到日志中时,我可以看到它出现在JFrame中。

这是应该如何工作,还是可以让用户在可见的模式JDialog时单击JFrame?

2 个答案:

答案 0 :(得分:1)

如果对话框是应用程序模式的,例如ModalityType.APPLICATION_MODAL,则当对话框可见时,它将阻止用户与应用程序中所有其他顶级窗口的交互。这不会阻止应用程序本身更改其他顶级窗口状态,包括它们显示的任何文本。

答案 1 :(得分:0)

似乎使用ModalityType.DOCUMENT_MODAL是答案。

给出JDialog ModalityType.DOCUMENT_MODAL(setModalityType)并确保setModal为false。 JDialog还应该具有所有者/父窗口。

应该始终可访问的JFrame应该与JDialog没有关系,因此不要将其用作JDialog的所有者/父级。

现在,JDialog阻止了所​​有者/父窗口,但是在显示模式JDialog时仍可以访问JFrame。

感谢@Hovercraft鳗鱼使我指向ModalityType。