Jfreechart - 根据更改的数据刷新图表

Joh*_*ann 10 java refresh jfreechart

如果我们想要改变"实时"某些数据,我想知道如何刷新图表.我的意思是,例如,我有一个带有TaskSeries的图表,该图表出现在3年后我希望将3年改为5年.我希望图表立即改变.

是否有某种更新图表或类似的东西?

我知道您可以说"获取您的TaskSeries,进行更改并自动刷新",但我的TaskSeries已生成,我无法轻易更改这些.这就是为什么我想找到一种重新计算和重建整个图表的方法.

tra*_*god 7

所述add()的方法TaskSeries自动发送SeriesChangeEvent到所有注册的监听器,例如CategoryPlot.在这个例子中,DynamicTimeSeriesCollection实现SeriesChangeEvent.在这种情况下,图表XYPlot是注册的监听器.


小智 5

XYPlot也有这个问题.我通过重置数据集找到了一种解决方法:

chart.getXYPlot().setDataset(chart.getXYPlot().getDataset());
Run Code Online (Sandbox Code Playgroud)

这很疯狂,但它有效......

注意:chart.setNotify(true)似乎什么都不做.


Eri*_*rik 0

我还没有找到一种简单的方法来“实时”更新 JFreeChart,因为 jfreechart 的数据结构与我的数据结构非常不兼容。因此,我构建了自己的 redraw() 方法,该方法从我的 dataModel 收集数据,构建 JFreeChart dataModel 并设置新的图表。

这给人一种“实时”更新的感觉,而且非常难看。