0

我正在尝试使用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

有什么我错过或忘记在这里做的事情吗,任何帮助让它运行将不胜感激

4

1 回答 1

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并确保您的类在类路径中

于 2014-02-21T10:06:24.993 回答