在iReport 3.7.6中,您可以仅选中BarPlot属性下的“显示标签”框。
在以前的版本(3.1.4)中,我必须创建一个ChartCustomizer类。
如果您需要格式化标签中的数字(例如,设置为百分比,添加千位分隔符等),那么即使在新版本中,您也绝对需要一个ChartCustomizer。
一个简单的例子:
import java.text.NumberFormat;import net.sf.jasperreports.engine.JRChart;import net.sf.jasperreports.engine.JRChartCustomizer;import org.jfree.chart.JFreeChart;import org.jfree.chart.labels.AbstractCategoryItemLabelGenerator;import org.jfree.chart.labels.CategoryItemLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.CategoryItemRenderer;import org.jfree.data.category.CategoryDataset;public class SimpleBarChartCustomizer implements JRChartCustomizer { public void customize(JFreeChart chart, JRChart jasperChart) { CategoryPlot plot = chart.getCategoryPlot(); BarRenderer renderer = (BarRenderer) plot.getRenderer(); CategoryItemRenderer catRenderer = ((CategoryItemRenderer)renderer); catRenderer.setbaseItemLabelGenerator(new NumberLabelGenerator("", NumberFormat.getInstance())); } static class NumberLabelGenerator extends AbstractCategoryItemLabelGenerator implements CategoryItemLabelGenerator { public NumberLabelGenerator(String labelFormat, NumberFormat formatter, NumberFormat percentFormatter) { super(labelFormat, formatter, percentFormatter); } protected NumberLabelGenerator(String labelFormat, NumberFormat formatter) { super(labelFormat, formatter); } private NumberFormat formatter = NumberFormat.getInstance(); public String generateLabel(CategoryDataset dataset, int series, int category) { Number b = dataset.getValue(series, category); formatter.setMaximumFractionDigits(2); return formatter.format(b); } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)