Java 模态对话框不';不要阻止其他帧出现在前面
我的应用程序有几个jframe。其中一个可能会使用JOptionPane.showConfirmDialog()显示应用程序模式对话框,例如,如果用户尝试用未保存的更改关闭框架 “模式”对话框会按预期阻止对其他帧的输入,但不会阻止其他窗口出现在前面。例如,如果出现通知并且其他帧之一调用toFront(),或者如果用户单击其他窗口之一,则可能会发生这种情况 因此,模式对话框可能隐藏在其他窗口后面,用户会认为应用程序已锁定,除非他们四处搜寻并设法找到正确的窗口Java 模态对话框不';不要阻止其他帧出现在前面,java,swing,Java,Swing,我的应用程序有几个jframe。其中一个可能会使用JOptionPane.showConfirmDialog()显示应用程序模式对话框,例如,如果用户尝试用未保存的更改关闭框架 “模式”对话框会按预期阻止对其他帧的输入,但不会阻止其他窗口出现在前面。例如,如果出现通知并且其他帧之一调用toFront(),或者如果用户单击其他窗口之一,则可能会发生这种情况 因此,模式对话框可能隐藏在其他窗口后面,用户会认为应用程序已锁定,除非他们四处搜寻并设法找到正确的窗口 对我来说这听起来像个虫子。MacOSX
对我来说这听起来像个虫子。MacOSX上的Java6确保了模式对话框始终保持在顶部,但使用Java7,它们可能会被其他窗口卡住,这是非常不可取的。有什么简单的方法可以让旧的行为回归?最好不必在数百个位置将showXXXDialog()更改为createDialog()/setVisible(true) 这似乎在Java8中得到了修复。当我使用Java8U45进行测试时,它在OSX10.10.3上对我进行了更正。您可以自己更新到Java 8,也可以为其他用户将Java 8 JRE与应用程序打包。请参阅。希望它能帮助删除多个JFrame不是一个选项。该应用程序规模巨大(开发时间超过15年),但大多数用户都在Mac上,在Mac上,应用程序通常支持多个顶级窗口。MDI在这个平台上是完全不合适的,应用程序已经使用JTabbedPane和浮动对话框来减少帧数。