2010-03-23 20 views
7

Ktoś, kto ma doświadczenie w korzystaniu z JFreeChart, jest sposobem na zmianę koloru moich etykiet dla moich osi XY. Teraz używam XYPlot i chcę zmienić kolor etykiet na moich osiach. Czy jest jakiś sposób na zrobienie tego?Zmiana koloru etykiet w JFreeChart

Odpowiedz

8

Powinieneś być w stanie użyć setTickLabelPaint() na żądanym Axis.

+1

Dziękuję, że odpowiedziałeś na moje pytanie. Dla każdego, kto ma ten problem, trochę utknąłem w tym, że getDomainAxis() XYPlot zwraca ValueAxis. Ale spojrzałem na dokumentację i zdałem sobie sprawę, że Valueaxis to klasa dziecięca Axis. – Albinoswordfish

+1

Doskonały. Jedną z ciekawszych funkcji 'JFreeChart' jest to, że dokumenty API są budowane z opcją' linksource', dzięki czemu możesz nawigować, klikając nazwy. – trashgod

+0

Czy można zmienić kolor farby w obrębie jednej etykiety? Na przykład. pierwsze słowo na etykiecie na czarno, a drugie na szaro? – CGFoX

0

Użyłem tego kodu, aby zmienić kolor wszystkich moich etykietach:

private void setFontColor(Color fontColor) { 
    JFreeChart chart = getChart(); 
    chart.getTitle().setPaint(fontColor); 
    Plot plot = chart.getPlot(); 
    if (plot instanceof CategoryPlot) { 
     setAxisFontColor(((CategoryPlot) plot).getDomainAxis(), fontColor); 
     setAxisFontColor(((CategoryPlot) plot).getRangeAxis(), fontColor); 
    } else if (plot instanceof XYPlot) { 
     setAxisFontColor(((XYPlot) plot).getDomainAxis(), fontColor); 
     setAxisFontColor(((XYPlot) plot).getRangeAxis(), fontColor); 
    } 
} 

private void setAxisFontColor(Axis axis, Color fontColor) { 
    if (!fontColor.equals(axis.getLabelPaint())) 
     axis.setLabelPaint(fontColor); 
    if (!fontColor.equals(axis.getTickLabelPaint())) 
     axis.setTickLabelPaint(fontColor); 
} 

Jeśli używasz napisy, trzeba dodać je też.