在 Swing 应用程序中使用 JavaFX 图表

Posted

技术标签:

【中文标题】在 Swing 应用程序中使用 JavaFX 图表【英文标题】:Using JavaFX Chart in Swing Application 【发布时间】:2013-02-19 16:38:56 【问题描述】:

我有一个传统的 Java swing 应用程序(扩展了 JFrame 并有一个主类),它使用 JFreeCharts 来实现一些图表功能。我最近看到了 JavaFX,认为这些图表看起来让人耳目一新,会给我的用户带来更好的体验。我希望将 JavaFX 图表场景嵌入到 jInternalFrame(它又从我的 jDesktopPane 中调用)。

我遵循了一个关于如何创建 javafx 应用程序和 javafx 图表的简单教程,但我坚持如何在现有代码中获取场景。我经历过的一个示例向我展示了如何实现这一点,但这意味着将我的项目转换为扩展“应用程序”类的 javafx。

我怎样才能实现我想要的?是否可以将我现有的 JFrame 保留为***类并简单地将 JFXPanel 添加到我的 jinternalframe。

任何帮助都会很好,请注意我已经完成了一些教程,它们要求我将我的项目转换为 javafx - 我只是想要在我现有的 swing 应用程序中使用 javafx 场景。

非常感谢,

【问题讨论】:

【参考方案1】:

您无需将 Swing 应用程序转换为 JavaFX 应用程序。您可以将 JavaFX Chart 放置在 JFXPanel 中,该 JFXPanel 可以放置在 Swing 组件中。我链接的 javadoc 包含用于在 Swing 应用程序中嵌入 JavaFX 节点的示例代码。

查看来自 Oracle 的官方 JavaFX for Swing Developers 教程。

还可以查看SwingInterop 的Embedding JavaFX in Swing 示例,以在 Swing 应用程序中嵌入图表。该示例由 Oracle 在 BSD 开源许可下提供,因此您可以在您的应用程序中使用它。

尽管如此,我的建议是,除非它是一个大型的现有 Swing 代码库,并且您只想在其中使用几个 JavaFX 功能,否则将您的应用程序编写为纯 JavaFX 应用程序,而不是混合 Swing/JavaFX申请。

【讨论】:

链接已失效。现在指向oracle.com/technetwork/java/javase/overview/… 感谢 rpax,我更新了答案中的链接以指向引用更多最新文档和示例的新位置。

以上是关于在 Swing 应用程序中使用 JavaFX 图表的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 JavaFX 应用程序中嵌入 Swing 组件?

使用 swing 的动画和使用 javafx 的动画之间的区别

使用JAVAFX和SWING有啥区别[重复]

TextArea Swing 和 JavaFX 选择范围的区别

新项目中的 JavaFX 或 Swing [重复]

带有 SWING 与 JavaFX 的 Java 用户界面