2017-03-18 10 views
0

通過向JFreeChart構造函數傳遞XYSeriesCollection「dataset」創建折線圖「chart」之後,我試圖獲取系列描邊/繪畫/形狀:JFreeChart getSeriesStroke/Paint/Shape(i)返回null

XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer)chart.getXYPlot().getRenderer(); 
for (int i = 0; i < dataset.getSeriesCount(); i++) { 
    renderer.getSeriesStroke(i); 
    renderer.getSeriesPaint(i); 
    renderer.getSeriesShape(i); 
    } 

但所有返回null。

我可以知道原因嗎?如何獲取非空對象?

謝謝。

回答

1

XYLineAndShapeRendererXYItemRenderer,它支持「渲染XYPlot上的單個(x,y)項的可視化表示。」雖然相應的系列屬性爲null,但項目屬性是可訪問的。從這個example開始,下面的變化產生所示的輸出:

代碼:

XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer)chart.getXYPlot().getRenderer(); 
for (int i = 0; i < xyPlot.getDataset().getSeriesCount(); i++) { 
    System.out.println(renderer.getItemStroke(i, 0)); 
    System.out.println(renderer.getItemPaint(i, 0)); 
    System.out.println(renderer.getItemShape(i, 0)); 
    System.out.println(renderer.getItemShape(i, N)); 
} 

控制檯:

$ java -cp .:$JFREE_LIB/* ScatterShape 
[email protected] 
java.awt.Color[r=255,g=85,b=85] 
java.awt.geom.Rectangle2D$Double[x=-3.0,y=-3.0,w=6.0,h=6.0] 
[email protected] 

enter image description here