Hallo zusammen,
ich hab eine JTable und im Model alles so konfiguriert, dass in einer Spalte eine Boolean wert angezeigt wird. Per Default wird das ja al Checkbox dargestellt. Passt auch soweit.
Jetzt habe ich aber noch einen DefaultTableCellRenderer dran gehangen um Vorder- und Hintergründe zu setzen. Jetzt steht aber auf einmal in der entsprechenden Spalt "false".
Was ist flasch an meinem Renderer??:
PS: Die Methodenlogik hab ich gekürzt, da nichts UI-Relevante drin stand, sondern nur dinge wie: Wenn wert gleich X nehme Farbe Y"
ich hab eine JTable und im Model alles so konfiguriert, dass in einer Spalte eine Boolean wert angezeigt wird. Per Default wird das ja al Checkbox dargestellt. Passt auch soweit.
Jetzt habe ich aber noch einen DefaultTableCellRenderer dran gehangen um Vorder- und Hintergründe zu setzen. Jetzt steht aber auf einmal in der entsprechenden Spalt "false".
Was ist flasch an meinem Renderer??:
Java:
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
this.setForeground(null);
this.setBackground(null);
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int modelCol = table.convertColumnIndexToModel(column);
int modelRow = table.convertRowIndexToModel(row);
formatBackground(modelCol, modelRow, row, isSelected);
formatForeground(modelCol, modelRow);
return this;
}
private void formatBackground(int modelCol, int modelRow, int viewRow, boolean isSelected) {
setBackground(isSelected ? SystemColor.textHighlight : viewRow % 2 == 0 ? Color.LIGHT_GRAY : Color.WHITE);
}
private void formatForeground(int modelCol, int modelRow){
setForeground(Color.GRAY);
}
PS: Die Methodenlogik hab ich gekürzt, da nichts UI-Relevante drin stand, sondern nur dinge wie: Wenn wert gleich X nehme Farbe Y"