我想知道如何更新图表,如果我们想更改“实时”某些数据。我的意思是,例如,我有一个带有3年出现的TaskSeries的图表,并且我希望将3年改为5年。我希望图表立即改变。Jfreechart - 根据更改数据刷新图表
是否有某种更新图表或类似的东西?我知道你可以说“让你的TaskSeries,做你的改变,它会自动刷新”,但我的TaskSeries生成,我不能轻易改变这些。这就是为什么我想找到重新计算和重建整个图表的方法。
我希望我已经够清楚了,这不容易解释。
感谢您的帮助,
约翰
我想知道如何更新图表,如果我们想更改“实时”某些数据。我的意思是,例如,我有一个带有3年出现的TaskSeries的图表,并且我希望将3年改为5年。我希望图表立即改变。Jfreechart - 根据更改数据刷新图表
是否有某种更新图表或类似的东西?我知道你可以说“让你的TaskSeries,做你的改变,它会自动刷新”,但我的TaskSeries生成,我不能轻易改变这些。这就是为什么我想找到重新计算和重建整个图表的方法。
我希望我已经够清楚了,这不容易解释。
感谢您的帮助,
约翰
我还没有找到一个简单的方法来更新JFreeChart的“活”,因为jfreechart的数据结构是我的数据结构极不相称。因此,我构建了一个redraw() - 我自己的方法,它从我的dataModel收集数据,构建一个JFreeChart数据模型并将图表设置为新的。
这给出了“实时”更新的感觉,也是非常丑陋的。
add()
方法TaskSeries
自动发送SeriesChangeEvent
给所有注册的收听者,例如, CategoryPlot
。在此example,DynamicTimeSeriesCollection
实施SeriesChangeEvent
。在这种情况下,图表的XYPlot
是已注册的监听器。
当'JFreeChart'由'ChartFactory'创建(也就是说,我不需要自己注册一个)时,是否将'XYPlot'注册为缺省侦听'SeriesChangeEvent'的侦听器?你的回答在两天内帮了我两次。谢谢! – coolcfan 2011-12-29 08:11:43
间接:['AbstractSeriesDataset'](http://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/general/AbstractSeriesDataset.html)_forwards_系列更改为情节,它会(自动)侦听'数据集'变化。 – trashgod 2011-12-29 09:12:55
我有这个问题;我这样做使用这个:
private void refreshChart() {
jPanel_GraphicsTop.removeAll();
jPanel_GraphicsTop.revalidate(); // This removes the old chart
aChart = createChart();
aChart.removeLegend();
ChartPanel chartPanel = new ChartPanel(aChart);
jPanel_GraphicsTop.setLayout(new BorderLayout());
jPanel_GraphicsTop.add(chartPanel);
jPanel_GraphicsTop.repaint(); // This method makes the new chart appear
}
非常感谢,你帮我解决了问题 – 2014-01-21 14:35:13
你有什么错误,但是很好的解决方案 1.-refreshChart( 2.-aChart初始化 – cmujica 2014-07-22 18:11:04
我也有这个问题与XYPlot。我发现了一个解决方法通过重新设置数据集:
chart.getXYPlot().setDataset(chart.getXYPlot().getDataset());
这是疯了,但它的工作原理...
注:chart.setNotify(true)
似乎什么也不做。
// create a chart
ChartFrame mychartframe = new ChartFrame("my charts", chart);
// some other stuff ...
// somewhere else in a code far far away
mychartframe.getChartPanel().getChart().fireChartChanged();
什么和我一起为以下几点:
//reset with new dataset
chart().setDataset(dataset);
repaint the ChartPanel that contains the JFreeChart
chartPanel.repaint();
我发现JFreeChart的方式与Swing的[可分离模型架构]非常兼容(http://java.sun.com/products/jfc/TSC /用品/建筑/)。 – trashgod 2011-06-01 19:34:27