在条形图上显示自定义标签颜色

时间:2014-09-10 10:18:51

标签: java jasper-reports jfreechart

我已经自定义了项目标签位置,以便当标签不适合栏内时,标签会显示在栏外面,如下所示。

bar chart

当文本在栏内时,如何为标签指定不同的颜色。例如,里面有白色文字,栏外有黑色文字。我已经尝试了下面的代码,但它始终显示黑色。我希望20出现在白色中,57和30出现在黑色文本中

注意:这是为 Jaspersoft Studio 条形图编写的自定义程序类

public class Test extends JRAbstractChartCustomizer {

    static class LabelGenerator extends StandardCategoryItemLabelGenerator {
        @Override
        public String generateLabel(CategoryDataset dataset, int series,
                int category) {
            return dataset.getRowKey(series).toString();
        }
    }

    @Override
    public void customize(JFreeChart chart, JRChart jasperChart) {

        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setRangeGridlinesVisible(false);

        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setItemMargin(-1);
        renderer.setBaseItemLabelGenerator(new LabelGenerator());
        renderer.setBaseItemLabelsVisible(true);
        ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.INSIDE12,
                TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT,
                -Math.PI / 2.0);
        renderer.setBaseItemLabelPaint(new Color(255, 255, 255));
        renderer.setBasePositiveItemLabelPosition(p);

        ItemLabelPosition p2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0);
        renderer.setBaseItemLabelPaint(new Color(0, 0, 0));
        renderer.setPositiveItemLabelPositionFallback(p2);

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
    }
}

0 个答案:

没有答案