Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 模态对话框不';不要阻止其他帧出现在前面_Java_Swing - Fatal编程技术网

Java 模态对话框不';不要阻止其他帧出现在前面

Java 模态对话框不';不要阻止其他帧出现在前面,java,swing,Java,Swing,我的应用程序有几个jframe。其中一个可能会使用JOptionPane.showConfirmDialog()显示应用程序模式对话框,例如,如果用户尝试用未保存的更改关闭框架 “模式”对话框会按预期阻止对其他帧的输入,但不会阻止其他窗口出现在前面。例如,如果出现通知并且其他帧之一调用toFront(),或者如果用户单击其他窗口之一,则可能会发生这种情况 因此,模式对话框可能隐藏在其他窗口后面,用户会认为应用程序已锁定,除非他们四处搜寻并设法找到正确的窗口 对我来说这听起来像个虫子。MacOSX

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

“模式”对话框会按预期阻止对其他帧的输入,但不会阻止其他窗口出现在前面。例如,如果出现通知并且其他帧之一调用toFront(),或者如果用户单击其他窗口之一,则可能会发生这种情况

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


对我来说这听起来像个虫子。MacOSX上的Java6确保了模式对话框始终保持在顶部,但使用Java7,它们可能会被其他窗口卡住,这是非常不可取的。有什么简单的方法可以让旧的行为回归?最好不必在数百个位置将showXXXDialog()更改为createDialog()/setVisible(true)

这似乎在Java8中得到了修复。当我使用Java8U45进行测试时,它在OSX10.10.3上对我进行了更正。您可以自己更新到Java 8,也可以为其他用户将Java 8 JRE与应用程序打包。

请参阅。希望它能帮助删除多个JFrame不是一个选项。该应用程序规模巨大(开发时间超过15年),但大多数用户都在Mac上,在Mac上,应用程序通常支持多个顶级窗口。MDI在这个平台上是完全不合适的,应用程序已经使用JTabbedPane和浮动对话框来减少帧数。