在模式 JDialog 可见时访问无模式 JFrame?

Access a modeless JFrame while a modal JDialog is visible?

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

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

JFrame 不是 JDialog 的 parent/owner。

JFrame 是创建的第一个 JFrame。

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

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

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

看来使用ModalityType.DOCUMENT_MODAL就是答案。

提供 JDialog ModalityType.DOCUMENT_MODAL (setModalityType) 并确保 setModal 为 false。 JDialog 还应该有 owner/parent Window.

应该始终可以访问的 JFrame 应该与 JDialog 无关,因此不要将其用作 JDialog 的 owner/parent。

现在,JDialog 会阻止 owner/parent Window,但在显示模态 JDialog 时仍可访问 JFrame。

感谢@Hovercraft Full Of Eels 将我指向 ModalityType。