自定义ireport的图表显示功能
自定义ireport的图表展示功能
名字是对的,我就是起的这个。这个类名肯是可以自己起的吧.
名字是对的,我就是起的这个。这个类名肯是可以自己起的吧.
Jar包是否加到了Classpath中?
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的图形属性中指定类的名字就OK了。
这样满足我们需求的Time series图就实现了,如果需要自定义其他类型的图表也是类似的操作。
1 楼
always-missing
2011-04-08
能帮我看看我的问题不?采用你的方法还是报错。
我有一个sql查询出的结果集,但是Time series的时候不好看,我就采用了你的方法,生成了一个jar包,绑定到ireport的classpath中,配置好Customizer Class类名,在ireport预览的时候报错
谢谢
我有一个sql查询出的结果集,但是Time series的时候不好看,我就采用了你的方法,生成了一个jar包,绑定到ireport的classpath中,配置好Customizer Class类名,在ireport预览的时候报错
Error filling print... java.lang.NoClassDefFoundError: SpecialTimeseriesChart (wrong name: com/xx/report/SpecialTimeseriesChart) null java.lang.NoClassDefFoundError: SpecialTimeseriesChart (wrong name: com/xx/report/SpecialTimeseriesChart)
谢谢
2 楼
hotdog
2011-04-09
提示类找不到,是你的类名字写错了吧? SpeclTimeseriesChart不是SpecialTimeseriesChart
3 楼
always-missing
2011-04-12
hotdog 写道
提示类找不到,是你的类名字写错了吧? SpeclTimeseriesChart不是SpecialTimeseriesChart
名字是对的,我就是起的这个。这个类名肯是可以自己起的吧.
4 楼
hotdog
2011-04-12
always-missing 写道
hotdog 写道
提示类找不到,是你的类名字写错了吧? SpeclTimeseriesChart不是SpecialTimeseriesChart
名字是对的,我就是起的这个。这个类名肯是可以自己起的吧.
Jar包是否加到了Classpath中?
5 楼
hero_shaoshuai
2011-12-27
方便加下QQ吗,有问题请教一下,我Q:124312857,谢啦。