2017-03-18 25 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