2013-04-10 35 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