Hallo,
ich habe eine Tabellle vom Typ jTable. Dieser Tabelle weise ich mittels der Funktion setDefaultRenderer() einen eigenen Renderer hinzu:
Der Code soll bewirken (und tut es teilweise auch), dass jede zweite Zeile grau eingefärbt wird.
Mit der Zuweisung "Obkect.class" will ich erreichen, dass der Renderer für alle (!) Zellen gelten soll!
Leider wird der Renderer anscheinend nicht benutzt, wenn die Daten in einer Zelle nicht vom String sind. Daten vom Typ Date oder Integer oder Booloean werden bei mir von meinem Renderer nicht behandelt.
Wie kann ich erreichen, das alle Zellen mit meinem Renderer behandelt werden? Zugleich finde ich es natürlich nützlich, dass Date, Integerer, Boolean usw. anders dargestellt werden als Strings. Im Grunde geht es mir ja nur um das Einfärben von Zeilen.
Weiß jemand Rat ?
ich habe eine Tabellle vom Typ jTable. Dieser Tabelle weise ich mittels der Funktion setDefaultRenderer() einen eigenen Renderer hinzu:
Code:
jTTable.setDefaultRenderer(Object.class, new ColoredTableCellRenderer());
Code:
class ColoredTableCellRenderer extends DefaultTableCellRenderer {
public void setValue(Object value) {
super.setValue(value);
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
super.getTableCellRendererComponent( table, value, isSelected,
hasFocus, row, column );
JLabel lbl_cell = new JLabel(value.toString());
lbl_cell.setOpaque(true);
lbl_cell.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
lbl_cell.setFont(table.getFont());
lbl_cell.setForeground(table.getForeground());
lbl_cell.setBackground(table.getBackground());
if (!isSelected && row % 2 == 0)
lbl_cell.setBackground(Color.lightGray);
else if (row % 2 == 1)
lbl_cell.setBackground(table.getBackground());
else
lbl_cell.setBackground(table.getSelectionBackground());
return lbl_cell;
}
}
Der Code soll bewirken (und tut es teilweise auch), dass jede zweite Zeile grau eingefärbt wird.
Mit der Zuweisung "Obkect.class" will ich erreichen, dass der Renderer für alle (!) Zellen gelten soll!
Leider wird der Renderer anscheinend nicht benutzt, wenn die Daten in einer Zelle nicht vom String sind. Daten vom Typ Date oder Integer oder Booloean werden bei mir von meinem Renderer nicht behandelt.
Wie kann ich erreichen, das alle Zellen mit meinem Renderer behandelt werden? Zugleich finde ich es natürlich nützlich, dass Date, Integerer, Boolean usw. anders dargestellt werden als Strings. Im Grunde geht es mir ja nur um das Einfärben von Zeilen.
Weiß jemand Rat ?