gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:41:15 26 4
gpt4 key购买 nike

我正在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com