我已经自定义了项目标签位置,以便当标签不适合栏内时,标签会显示在栏外面,如下所示。
当文本在栏内时,如何为标签指定不同的颜色。例如,里面有白色文字,栏外有黑色文字。我已经尝试了下面的代码,但它始终显示黑色。我希望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);
}
}