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