Hallo,
habe einen kleinen Colorpicker gebastelt, welche die jeweiligen gewählten Farben auf die Table anwenden soll, sodass Hintergrundfarbe (von geraden/ungeraden Spalten), Textfarbe (foreground), Selektions und Gridfarbe vom User ausgewählt werden. Dies habe ich über den CellRenderer realisiert, der einfach ungerade Zellen anders färbt.
Soweit, so gut. Das funktioniert auch alles. Nun habe das dazugehörige TableModel programmiert in welchem Zahlen, Boolean-Werte, Strings und Datumswerte vorhanden sind.
Wende ich nun das TableModel auf die Table an funktioniert der Renderer nicht mehr richtig. Alle String und Date-Felder werden richtig angezeigt, alle Integer und Boolean-Felder nicht. Es ist wie wenn der Cell-Renderer auf diese Felder nicht richtig funktioniert.
Habe leider nichts im Internet zu diesem Problem gefunden was genau den Grund dafür beschreibt. Könntet ihr mir das Phänomen erklären und beschreiben mit welcher Methode ich dem ganzen aus dem Weg gehe?
Danke schonmal!
Hier mein CellRenderer:
habe einen kleinen Colorpicker gebastelt, welche die jeweiligen gewählten Farben auf die Table anwenden soll, sodass Hintergrundfarbe (von geraden/ungeraden Spalten), Textfarbe (foreground), Selektions und Gridfarbe vom User ausgewählt werden. Dies habe ich über den CellRenderer realisiert, der einfach ungerade Zellen anders färbt.
Soweit, so gut. Das funktioniert auch alles. Nun habe das dazugehörige TableModel programmiert in welchem Zahlen, Boolean-Werte, Strings und Datumswerte vorhanden sind.
Wende ich nun das TableModel auf die Table an funktioniert der Renderer nicht mehr richtig. Alle String und Date-Felder werden richtig angezeigt, alle Integer und Boolean-Felder nicht. Es ist wie wenn der Cell-Renderer auf diese Felder nicht richtig funktioniert.
Habe leider nichts im Internet zu diesem Problem gefunden was genau den Grund dafür beschreibt. Könntet ihr mir das Phänomen erklären und beschreiben mit welcher Methode ich dem ganzen aus dem Weg gehe?
Danke schonmal!
Hier mein CellRenderer:
Java:
private TableCellRenderer renderer;
private ColorPicker cp;
public TableRenderer(TableCellRenderer renderer, ColorPicker cp) {
this.renderer = renderer;
this.cp = cp;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (row % 2 == 0) {
c.setBackground(cp.getEvenBackground());
} else {
c.setBackground(cp.getUnevenBackground());
}
for (int i : table.getSelectedRows()) {
if (row == i) {
c.setBackground(cp.getSelectionBackground());
}
}
return c;
}