I have a JFreeChart which I'm running through a customizer (JRAbstractChartCustomizer). I have figured out how to color individual bars and item labels according to the data (eg green for >90%, yellow for 75-90%, red for <75%) by extending BarRenderer and overriding getItemLabelPaint(int row, int column)
and getItemPaint(int row, int column)
. Each bar has a corresponding tick with a String label, since the domain is by name rather than by numeric value. I need a way to individually color the tick labels based on the value similar to how I color the bars and the item labels.
What method do I override in BarRenderer, or what other thing do I do in my JRChartCustomizer to override the color on an individual basis.
What I'm doing for the item labels: (I want to do basically the same thing, but for tick labels)
class CustomBarRenderer extends BarRenderer {
private final Color COLOR_GREEN = new Color(0, 227, 0);
private final Color COLOR_YELLOW = new Color(247, 210, 0);
private final Color COLOR_RED = new Color(237, 26, 0);
@Override
public Paint getItemLabelPaint(int row, int col) {
CategoryDataset cDataset = getPlot().getDataset();
if (cDataset != null) {
Number itemValue = cDataset.getValue(row, col);
String rowKey = cDataset.getRowKey(row).toString();
String colKey = cDataset.getColumnKey(col).toString();
if (itemValue != null) {
int intVal = itemValue.intValue();
if (intVal > yellowHigh) {
return COLOR_GREEN;
} else if (intVal >= yellowLow) {
return COLOR_YELLOW;
} else {
return COLOR_RED;
}
}
}
// if all else fails...
return super.getItemLabelPaint(row, col);
}
@Override
public Paint getItemPaint(int row, int col) {
... similar to above ...
}
}