Jasper Report Chart 操作 labelExpression
Jasper Report Chart manipulate labelExpression
Jasper Report 4.5
如何访问条形图标签表达式?我试过 ChartCustomizer
,我们可以通过 SeriesItemLabelGenerator
访问标签。但是当这个生成器执行时,它没有我们在 jrxml 文件中为 <labelExpression> 字段设置的公式,例如[barValue$ColorCode$]。我发现<labelExpression>是在CategoryLabelGenerator
class中执行的,也就是JasperReportclass。
我想要实现的是从数据集中传递颜色代码以及格式为 [barValue$ColorCode$] 的条值。我想选择 $ColorCode$ 并获取该值,然后将标签值更改为 [barValue]。 ColorCode 将用于分配来自 ChartCustomizer
的条形颜色。但事情是当我从 StandardCategoryItemLabelGenerator
或 AbstractCategoryItemLabelGenerator
访问 labelExpression 然后它会 returns [barValue]来自 generateLabelString()
和 generateLabel()
方法。
唯一的目的是使用从数据集传递的 ColorCode。如果我们只传递 ColorCode 而不是 [barValue$ColorCode$],那么只有报告显示 [barValue ] 只要。我认为我们可以自定义 CategoryLabelGenerator class 然后它会解决我的问题。但我不知道如何自定义 CategoryLabelGenerator.
非常感谢任何 input/help 实现此目标的人。
谢谢。
在深入研究 JasperReport 和 jFreeChart 文档的源代码后,找到了实现此目标的方法。在这里写代码。实现了 JRChartCustomizer
接口。
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryDataset dataset = plot.getDataset();
CategoryLabelGenerator categoryLabelGenerator = null;
if (jasperChart.getDataset() instanceof JRFillChartDataset) {
JRFillChartDataset jrFillChartDataset = (JRFillChartDataset) jasperChart.getDataset();
categoryLabelGenerator = (CategoryLabelGenerator) jrFillChartDataset.getLabelGenerator();
}
if (categoryLabelGenerator != null) {
for (int i = 0; i < dataset.getRowCount(); i++) {
for (int j = 0; j < dataset.getColumnCount(); j++) {
String generatedLabel = categoryLabelGenerator.generateLabel(dataset, i, j);
}
}
}
}
Jasper Report 4.5
如何访问条形图标签表达式?我试过 ChartCustomizer
,我们可以通过 SeriesItemLabelGenerator
访问标签。但是当这个生成器执行时,它没有我们在 jrxml 文件中为 <labelExpression> 字段设置的公式,例如[barValue$ColorCode$]。我发现<labelExpression>是在CategoryLabelGenerator
class中执行的,也就是JasperReportclass。
我想要实现的是从数据集中传递颜色代码以及格式为 [barValue$ColorCode$] 的条值。我想选择 $ColorCode$ 并获取该值,然后将标签值更改为 [barValue]。 ColorCode 将用于分配来自 ChartCustomizer
的条形颜色。但事情是当我从 StandardCategoryItemLabelGenerator
或 AbstractCategoryItemLabelGenerator
访问 labelExpression 然后它会 returns [barValue]来自 generateLabelString()
和 generateLabel()
方法。
唯一的目的是使用从数据集传递的 ColorCode。如果我们只传递 ColorCode 而不是 [barValue$ColorCode$],那么只有报告显示 [barValue ] 只要。我认为我们可以自定义 CategoryLabelGenerator class 然后它会解决我的问题。但我不知道如何自定义 CategoryLabelGenerator.
非常感谢任何 input/help 实现此目标的人。
谢谢。
在深入研究 JasperReport 和 jFreeChart 文档的源代码后,找到了实现此目标的方法。在这里写代码。实现了 JRChartCustomizer
接口。
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryDataset dataset = plot.getDataset();
CategoryLabelGenerator categoryLabelGenerator = null;
if (jasperChart.getDataset() instanceof JRFillChartDataset) {
JRFillChartDataset jrFillChartDataset = (JRFillChartDataset) jasperChart.getDataset();
categoryLabelGenerator = (CategoryLabelGenerator) jrFillChartDataset.getLabelGenerator();
}
if (categoryLabelGenerator != null) {
for (int i = 0; i < dataset.getRowCount(); i++) {
for (int j = 0; j < dataset.getColumnCount(); j++) {
String generatedLabel = categoryLabelGenerator.generateLabel(dataset, i, j);
}
}
}
}