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

时间:2011-06-01 10:08:51

标签: java refresh jfreechart

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

是否有某种类型的更新图表?

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

6 个答案:

答案 0 :(得分:7)

TaskSeriesadd()方法会自动向所有已注册的听众发送SeriesChangeEvent,例如CategoryPlot。在此example中,DynamicTimeSeriesCollection实现SeriesChangeEvent。在这种情况下,图表的XYPlot是注册的听众。

答案 1 :(得分:5)

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

chart.getXYPlot().setDataset(chart.getXYPlot().getDataset());

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

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

答案 2 :(得分:4)

我有这个问题;我是这样做的:

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
}

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

cmd

答案 5 :(得分:0)

与我合作的是以下内容:

//reset with new dataset
chart().setDataset(dataset);
repaint the ChartPanel that contains the JFreeChart
chartPanel.repaint();