【发布时间】:2015-03-19 10:28:52
【问题描述】:
因此,我们再次将完全使用 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 组件的输入。
【问题讨论】:
-
你的问题到底是什么?
-
如何使 JavaFX 对话框成为整个 Swing 应用程序的模式?
-
您打算如何将带有内部框架的 JDesktopPane 移植到 FX?那里似乎没有对应物。也许您会使用“对接框架”?根据 Jira 的说法,这仍未解决 (javafx-jira.kenai.com/browse/RT-14039)。你有什么代码我们可以专门讨论吗?
-
我猜这是问题的一部分,以及为什么应用程序不会完全是 JavaFX 并且最终仍将嵌入到 Swing 应用程序中。
-
我根本不了解您的应用程序,但也许您可以考虑一个新的使用概念 - 可能是手风琴、标签、拆分窗格或其他任何东西。我只是不相信你的需求只能用 Swing 而不是 FX。
标签: swing javafx modal-dialog alert jdesktoppane