java - 更改预编译 Jasperreport 中 JRChart 的渲染器

标签 java jasper-reports ireport jfreechart

我正在 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 对象的方法,也找不到任何其他方法将自定义绘图渲染器传递到图表。

有人有什么想法吗? 提前致谢。

最佳答案

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

创建一个看起来像这样的定制器:

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

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

关于java - 更改预编译 Jasperreport 中 JRChart 的渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928241/

相关文章:

jasper-reports - 是否可以将 .jasper 转换为 .jrxml?

java - 不支持的方法 : Statement. setCursorName,WAS 8.5.0,AIX,Oracle 11

java - 对于特定方法,如何使用反射在java中查看已检查的异常?

java - Jms 模板未在事务中接收消息

java - jasper 报告了 poi jar 的替代品

spring - Tomcat 需要重新启动才能进行 Jasper Reports 更改

java - 如何在 iReport 中显示 CLOB(或 BLOB)字符串?

java - Spring boot 为静态字段 Autowiring BeanCreationException

jasper-reports - 如何在 PieChart 中显示带 2 位小数的百分比?

jasper-reports - 如何向折线图添加值图例?