我想知道如何更新圖表,如果我們想更改「實時」某些數據。我的意思是,例如,我有一個帶有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