因此,我们再次将完全使用 Swing 的现有 Java 应用程序转换为使用 JavaFX。但是,该应用程序不会完全使用 JavaFX。这似乎导致警报/对话框和模式出现一些问题。我们目前使用的是 Java 8u40。
主要的应用程序基本上是在一个有菜单的 JFrame 中。主要内容窗格是 JDesktopPane,单击 MenuItem 会在 DeskopPane 中打开新的 JInternalFrames。目前,我们正在转换为 JavaFX 的屏幕基本上是 JInternalFrame 中的 JFXPanel。从 JFXPanel 打开的任何警报/对话框都是模态面板本身,但不是 JInternalFrame、DeskopPane、菜单等。
我在 DialogPane 文档中读到,他们计划在 JavaFX 的未来版本中引入一些轻量级对话框,甚至可能是 InternalFrames,所以也许我们只需要再等一会儿才能获得这个功能。但是,理想情况下,当打开一个新的警报/对话框时,它将是整个应用程序的模态。
编辑:目前为模态对话框执行以下操作:
((Stage)getDialogPane().getScene().getWindow()).setAlwaysOnTop(true);
这使得对话框总是出现在顶部,但是即使我们的主应用程序被最小化,对话框也会保持在其他应用程序的顶部。它也不会阻止框架中任何 Swing 组件的输入。