使用BarChart时出现定制器类错误:BarRenderer无法转换为net.sf.jasperreports.engine.JRChartCustomizer

时间:2014-02-19 15:00:27

标签: jasper-reports jfreechart ireport jfreereport

我正在尝试使用 jFree 图表中的自定义程序类 BarRenderer 来自定义条形图,我已将jar添加到类路径并将类添加到自定义程序条形图属性的类部分为 org.jfree.chart.renderer.category.BarRenderer ,我不断收到错误:

net.sf.jasperreports.engine.JRRuntimeException: Could not create chart customizer instance.
Caused by: java.lang.ClassCastException: org.jfree.chart.renderer.category.BarRenderer cannot be cast to net.sf.jasperreports.engine.JRChartCustomizer

我有什么遗漏或忘记在这里做的事情,非常感谢任何帮助让这个运行

1 个答案:

答案 0 :(得分:0)

自定义程序和渲染器是两种不同的动物:渲染器负责绘制图表的一部分,而自定义程序允许您自定义它。

您需要做的是创建一个扩展JRChartCustomizer的类,并在自定义方法中设置BarRenderer

public class MyCustomizer extends JRAbstractChartCustomizer {
    public void customize(JFreeChart chart, JRChart jasperChart) {
        if (chart.getPlot() instanceof CategoryPlot) {
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            plot.setRenderer(new BarRenderer());
        }
    }
}

然后在您的设计中,您需要将自定义程序设置为MyCustomizer并确保您的类位于类路径中