模态对话框不会阻止前面的其他帧

时间:2014-05-26 22:25:35

标签: java swing

我的应用程序有几个JFrame。其中一个可能使用JOptionPane.showConfirmDialog()显示应用程序模式对话框,例如,如果用户尝试使用未保存的更改关闭框架。

模态对话框按预期阻止对其他帧的输入,但它不会阻止其他窗口到达前面。如果发生通知并且其中一个帧调用toFront(),或者如果用户单击其他窗口之一,则可能会发生这种情况。

因此,模式对话框可以隐藏在其他窗口后面,并且用户会认为应用程序已被锁定,除非他们四处搜寻并设法找到正确的窗口。

这对我来说听起来像个错误。 Mac OS X上的Java 6确保模态对话框始终保持最佳状态,但是对于Java 7,它们最终会被困在其他窗口之后,这是非常不受欢迎的。是否有任何简单的方法可以恢复旧的行为?最好不要在数百个地方将showXXXDialog()更改为createDialog()/ setVisible(true)!

1 个答案:

答案 0 :(得分:0)

似乎这已在Java 8中得到修复。当我使用Java 8 u45进行测试时,它在OSX 10.10.3上得到了纠正。您可以自己更新到Java 8,或者将Java 8 JRE与您的应用程序打包给其他用户。