2013-04-10 34 views
0

我正在使用Java应用程序编译和归档的IReport中创建Jasper报告模板。在预编译的Jasperreport中更改JRChart的渲染器

在散点图上,我想绘制回归线作为样条。目前,我发现这样做的唯一方法是使用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对象,也可以找到其他的方法来传递一个自定义的情节渲染到图表。

有没有人有任何想法? 在此先感谢。

回答

1

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

创建一个定制,看起来是这样的:

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

然后编译它并确保它在贾斯珀的类路径,当你来到填补了报告。

+0

太棒了!看起来就像我需要的!我会让你知道它是怎么回事。 – 2013-04-12 14:17:04