我有一個JFreeChart,它通過定製器(JRAbstractChartCustomizer)運行。我已經想通過擴展BarRenderer並覆蓋getItemLabelPaint(int row, int column)
和getItemPaint(int row, int column)
來根據數據(例如綠色> 90%,黃色75-90%,紅色< 75%)對單個條和項目標籤着色。每個欄都有一個帶有String標籤的相應刻度,因爲該域是按名稱而不是數字值。我需要一種方法來根據類似於我爲條和顏色標籤着色的值單獨着色滴答標籤。自定義單個域軸刻度標籤的顏色
我在BarRenderer中重寫了哪種方法,或者在JRChartCustomizer中如何在個別基礎上重寫顏色以做其他事情。
我在做什麼了項目標籤:(我想基本上做同樣的事情,但對於刻度標記)
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 ...
}
}
這會有很大幫助!我不認爲類別名稱可以使用正則表達式或通配符?這太簡單了。 –
對不起,我不知道。你可能會傳遞一個合適的'Function',如[這裏](http://stackoverflow.com/a/37222598/230513)所示,以確保在兩個地方進行相同的計算。 – trashgod
不用擔心。你的回答很好地解決了我的問題。 –