我是JasperReports的全新品牌,并且正在慢慢地通过基础知识的方式努力。我有一种情况,我不想用DB驱动的数据填充饼图(通过所谓的数据源)。我想提供从运行时传入JasperFillManager的Java hashmap填充饼图所需的所有信息。JasperReport饼图示例
这将包括参数来标记饼图中的切片,设置它们的颜色并定义它们的权重/值(切片的大小)。所以,在我的Java代码中的某个时刻,我会写东西像:
HashMap<String,Object> jrParams = new HashMap<String,Object>();
jpParams.put("slice_1_label", "Red Team");
jpParams.put("slice_1_color", Color.RED);
jpParams.put("slice_1_value", 67.0);
jpParams.put("slice_2_label", "Blue Team");
jpParams.put("slice_2_color", Color.BLUE);
jpParams.put("slice_2_value", 33.0);
// ... some other code
JasperFillManager.fillReport(jasperDesign, jrParams);
我想在这里实现将有2片饼图的目标;红色的“红色团队”片占67%,蓝色的“蓝色团队”片占33%。
我现在需要帮助我的散列表和JRXML/JasperDesign之间的“连接点”。
是否有人可以告诉我(或只是帮助指导我)朝着什么样的<pieChart>
JRXML我需要编写以便让我的jrParam
散列表填充饼图与运行时参数?我在下面做了一个最好的尝试,但我只是努力完全理解这一切。
<pieChart>
<chart isShowLegend="true">
<reportElement x="10" y="10" width="300" height="300"/>
<chartTitle>
<titleExpression><![CDATA[My First JR Pie Chart]]></titleExpression>
</chartTitle>
</chart>
<pieDataset>
<!-- Here is where I believe I need to put my two slices; not sure how -->
</pieDataset>
<piePlot>
<plot backcolor="#8BA870"/>
<itemLabel color="#000000"/>
</piePlot>
</pieChart>
在此先感谢您的任何帮助/澄清!
Mechkov谢谢你的回应。是的,我正在使用iReports(及其图表示例),这是我从我的问题中获得大部分JRXML的地方。我同意在大多数情况下,我想用JRDataSource来填充我的报表数据,在这种情况下,我需要一个JRBeanDataSource。不过,我只是想知道是否可以使用纯哈希映射的参数,如果是的话,JRXML的样子。再次感谢您的回应! – IAmYourFaja
或者,如果您可以编辑它以提供如何编写JRXML以使用JRBeanArrayDataSource,我会接受您的答案。假设我有一个PieSlice bean,它具有String标签,Color颜色和Double值作为其唯一的3个属性,以及每个属性的标准getter/setter。然后我在填充时将这些PieSlices的数组(大小= 2对应于我原来的问题中的2个切片)传递给JasperFillManager。 JRXML现在需要什么样子? – IAmYourFaja
@Zvey我想写下整个代码,但是偶然发现了这个很好的解释......检查出来......哦,希望它能让你知道如何使用Map或List数据源来做到这一点。让我知道你是否有更多问题。问候! http://gilbertadjin.wordpress.com/2009/08/09/charting-with-jasper-reports/ – Mechkov