作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 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/
我正在 IReport 中创建 Jasper 报告模板,并使用 Java 应用程序对其进行编译和归档。 在散点图上,我想将回归线绘制为样条曲线。目前,我发现做到这一点的唯一方法是使用 JFreeCha
我是一名优秀的程序员,十分优秀!