0

我正在 IReport 中创建一个 Jasper 报告模板,我正在使用 Java 应用程序对其进行编译和归档。

在散点图上,我想将回归线绘制为样条曲线。目前,我发现这样做的唯一方法是使用 JFreeCharts XYSplineRenderer。但是,这需要我在 Java 代码中创建图表,然后在填充时将其作为参数传递给报表。这也需要我在代码中自定义图表的外观。

我希望能够使用 IReport 在 jrxml 中设计我的图表,用 Java 编译报告,获取图表对象并在填充之前为其设置自定义渲染器。

像这样的东西:

JasperReport report = JasperCompileManager.compileReport(reportIs);
JRChart jrChart = (JRChart) report.getSummary().getElementByKey("chart");
JFreeChart chart = jrChart.getJFreeChart(); // this method does not exist
((XYPlot)chart.getPlot()).setRenderer(new XYSplineRenderer());

问题是我找不到从已编译报告中检索实际 JFreeChart 对象的方法,也找不到任何其他方法将自定义绘图渲染器传递给图表。

有没有人有任何想法?提前致谢。

4

1 回答 1

1

您可以使用图表定制器来完成此操作。它允许您以 a JFreeChart(以及 a JRChart)的形式访问图表,这应该正是您所需要的。customizerClass通过设置属性将图表定制器添加到图表。该customize方法由 Jasper 调用,允许您在报表填充过程中修改图表。

创建一个如下所示的定制器:

public class MyChartCustomizer implements JRChartCustomizer {
    @Override
    public void customize(JFreeChart jFreeChart, JRChart jRChart) {
        ((XYPlot)jFreeChart.getPlot()).setRenderer(new XYSplineRenderer());
    }
}

然后编译它并确保它在您填写报告时位于 Jasper 的类路径中。

于 2013-04-12T13:33:16.463 回答