自定义ireport的图表展示功能

 

ireport做报表的时候,有时内建的报表并不能满足我们的需求。比如,需求要在Time series图上的每个点显示value值,在ireport内建的功能中就没有这样的实现。

 

图表展示是Jasperreports通过Jfreechart来实现的,并且提供了对外的自定义图形接口,利用这个接口可以重新定义内建的图形。这个接口是JRAbstractChartCustomizer,需要实现的方法为customize,通过参数我们可以获取到JFreechart对象然后做我们想做的事情。

 

所以要实现上述的需求,需要自定义这样的类。

 

public class SpeclTimeseriesChart extends JRAbstractChartCustomizer {

    @Override
    public void customize(JFreeChart chart, JRChart jrchart) {
        XYPlot plot = (XYPlot) chart.getPlot(); 
        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
        //设置曲线是否显示数据点 
        xylineandshaperenderer.setBaseShapesVisible(true);
        
        //设置曲线显示各数据点的值 
        XYItemRenderer xyitem = plot.getRenderer();
        xyitem.setBaseItemLabelsVisible(true);
        xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); 
        xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator()); 
        plot.setRenderer(xyitem); 
    }
}
 

 

要在ireport中调试,需要专门为这个类打上Jar包(用eclipse的export很容易),然后在ireport的工具-选项的classpath中添加这个Jar包。

 

自定义ireport的图表展示功能

 

最后在ireport的图形属性中指定类的名字就OK了。

 

自定义ireport的图表展示功能

 

这样满足我们需求的Time series图就实现了,如果需要自定义其他类型的图表也是类似的操作。

 

 

你可能感兴趣的:(eclipse,jfreechart)