Hallo
Ich habe eine JTable mit 7 Spalten und möchte (abhängig vom Wert in der letzten Spalte) diejenigen Zeilen unterschiedlich färben die eine bestimmte Bedingung erfüllen.
Dazu habe ich mir eine Klasse gebastelt:
Aufgerufen wird die Methode in meiner GUI-Klasse des JTable:
Das ganze klappt fast.
Die einzelnen Zeilen werden unterschiedlich gefärbt abhängig des letzten Spaltenwerts ABER nicht die relevante Zeile(also die Zeile in der der Spaltenwert vorkommt) sondern immer erst die nachfolgende!
Woran könnte das liegen?
Ich habe eine JTable mit 7 Spalten und möchte (abhängig vom Wert in der letzten Spalte) diejenigen Zeilen unterschiedlich färben die eine bestimmte Bedingung erfüllen.
Dazu habe ich mir eine Klasse gebastelt:
Java:
public class MyTableCellRenderer extends JLabel implements TableCellRenderer{
private Color colorNormal =Color.gray;
private Color colorHigh =Color.red;
private Color colorMiddle =Color.orange;
private Color colorLow =Color.black;
private int columnValue;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
column = table.convertColumnIndexToModel(column);
if (column == 6) {
columnValue = Integer.parseInt((String)value);
if (columnValue == 3) {
this.setForeground(colorHigh);
}
else if (columnValue == 2) {
this.setForeground(colorMiddle);
}
else if (columnValue == 1) {
this.setForeground(colorLow);
}
else {
this.setForeground(colorNormal);
}
}
this.setText(value.toString());
return this;
}
}
Aufgerufen wird die Methode in meiner GUI-Klasse des JTable:
Java:
table.setDefaultRenderer(Object.class, new MyTableCellRenderer());
Die einzelnen Zeilen werden unterschiedlich gefärbt abhängig des letzten Spaltenwerts ABER nicht die relevante Zeile(also die Zeile in der der Spaltenwert vorkommt) sondern immer erst die nachfolgende!
Woran könnte das liegen?