在模态JDialog可见时是否可以访问无模JFrame?
我有一个显示我的日志行的JFrame。当我显示模式JDialog(例如登录)时,用户无法单击JFrame。
JFrame不是JDialog的父级/所有者。
JFrame是创建的第一个JFrame。
请注意,当我在JDialog中执行某项操作导致将日志行添加到日志中时,我可以看到它出现在JFrame中。
这是应该如何工作,还是可以让用户在可见的模式JDialog时单击JFrame?
答案 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。