Witam,
Zacząłem niedawno swoją małą przygodę z javą (JDK7). Mam problem z tabelką w Swing (JTable).
Chcę zrobić swój customrender i wszystko chodzi, ale nie do końca tak jak bym chciał, jest małe "ale".
Chciałbym pokolorować cały wiersz, ale niestety koloruje tylko pierwszą kolumnę, tylko na nią to oddziałuje. Debuger pokazuje, że skacze po wierszach pierwszej kolumny, ale nie "wchodzi" na drugą kolumnę.
Mam taki kodzik:
Ustawienie renderera:
jTable1.setDefaultRenderer(Object.class, new BoardTableCellRenderer());
Klasa:
class BoardTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
Object valueAt = table.getModel().getValueAt(row, 1);
String s = "";
if (valueAt != null) {
s = valueAt.toString();
}
if (s.equalsIgnoreCase("1")) {
c.setForeground(Color.YELLOW);
c.setBackground(Color.gray);
} else {
c.setForeground(Color.black);
c.setBackground(Color.WHITE);
}
}
Kolumn mam 3 (dla przykładu) i chcę zmieniać kolor wiersza (tła) na podstawie zawartości komórki z kolumny drugiej (indeks 1).
Ale zmienia mi tylko tło komórek z pierwszej kolumny.
Próbowałem użyć pętli by ręcznie przeskoczyć wszystkie trzy kolumny danego wiersza i teoretycznie działało, ale no właśnie, tylko w teorii. (Debuger pokazywał, że faktycznie skacze po kolumnach, ale efekt był zerowy, żadnej zmiany)
Pewnie to jakiś drobiazg, ale nie mogę go wypatrzyć. Może ktoś będzie w stanie go dostrzec.
Dzięki i pozdrawiam