gpt4 book ai didi

charts - 在后台渲染 JavaFX 2 图表

转载 作者:行者123 更新时间:2023-12-04 15:01:33 25 4
gpt4 key购买 nike

我有一个用于数据分析的应用程序。该应用程序的很大一部分是能够根据收集的数据显示图表,并且能够在一个批处理操作中导出大量任务。到目前为止,我一直使用 JFreeChart,但我想使用 native JavaFX 图表,以便导出的图表在应用程序的屏幕上看起来仍然相同。

我在 JavaFX 2.2.1 (jdk 7u6) 上。

我能够批量生成图表,但这意味着我必须卡住用户界面 (UI),因为这些图表必须在 JavaFX 应用程序线程上呈现。我使用 Platform.runLater(new Runnable() { ... });为此的命令,包含在生成图表的代码中。

如果我将每个单独的图表生成包装到 Platform.runLater(new Runnable() { ... }); GUI 不会像以前一样卡住,但我也不会得到任何反馈,因为我无法检测每个单独的图表何时生成(它们在稍后阶段运行,我无法控制何时可能发生,并且据我所知也没有可用的回调)。

对于这个特定事件,我想向用户显示一个进度条,并且我希望这个进度条随着实际图表的生成而更新。

关于如何实现这一目标的任何建议或提示?

最佳答案

此问题已在 Oracle JavaFX 论坛主题中解决:Render charts in background .

解决方案是使用包含三个子任务的 SaveChartsTask:

  • 在离屏场景图中创建图表。
  • 将每个屏幕外图表的快照拍摄到 JavaFX 图像。
  • 使用 imageio将 JavaFX 图像导出到文件的例程。

  • 任务的 workDone 属性允许监视操作的过程。通过将全部工作拆分为子任务,尽可能将工作从 JavaFX 应用程序线程中分离出来,并在必要时使用 CountDownLatches 和 BlockingQueues 来同步操作,UI 能够保持响应。

    关于charts - 在后台渲染 JavaFX 2 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232578/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com