C
c_u
Gast
Hi
Ich habe eine eigene Table-Klasse, welche von JTable erbt.
Darin habe ich die Methode getCellRenderer(int row, int col)
überschrieben, damit ich gewisse Zeilen farbig hinterlegen kann.
Falls ich eine Zeile nicht einfärben möchte, gebe ich einfach wie folgt zurück:
return getDefaultRenderer(getColumnClass(column));
Falls ich eine Zeile einfärben will, gebe ich einen eigenen CellRenderer zurück,
welcher von DefaultTableCellRenderer erbt.
Nun zum Problem:
Bei NICHT-eingefärbten Zeilen, werden boolean Werte mittels Checkbox, ein Datum
schön formatiert usw angezeigt, während
Felder, welche meinen eigenen Renderer verwenden nicht so angezeigt werden.
Code meiner Table:
Code meines CellRenderers:
Hat einer Tipps????
Ich habe eine eigene Table-Klasse, welche von JTable erbt.
Darin habe ich die Methode getCellRenderer(int row, int col)
überschrieben, damit ich gewisse Zeilen farbig hinterlegen kann.
Falls ich eine Zeile nicht einfärben möchte, gebe ich einfach wie folgt zurück:
return getDefaultRenderer(getColumnClass(column));
Falls ich eine Zeile einfärben will, gebe ich einen eigenen CellRenderer zurück,
welcher von DefaultTableCellRenderer erbt.
Nun zum Problem:
Bei NICHT-eingefärbten Zeilen, werden boolean Werte mittels Checkbox, ein Datum
schön formatiert usw angezeigt, während
Felder, welche meinen eigenen Renderer verwenden nicht so angezeigt werden.
Code meiner Table:
Code:
private class UnnummeriertTable extends JTable {
public UnnummeriertTable(UnnummeriertTableModel model) {
super(model);
this.setDefaultRenderer(Date.class, new DateCellRenderer(true));
}
public TableCellRenderer getCellRenderer(int row, int column) {
UnnummeriertTableModel model = (UnnummeriertTableModel)this.getModel();
if (model.isUeberverkauf(row)) {
return new BackGroundRenderer(Color.RED);
} else
return getDefaultRenderer(getColumnClass(column));
}
}
Code meines CellRenderers:
Code:
public class BackGroundRenderer extends DefaultTableCellRenderer {
private Color background;
public BackGroundRenderer(Color color) {
this.background = color;
setOpaque(true); //MUST do this for background to show up.
}
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
comp.setBackground(background);
return comp;
}
}
Hat einer Tipps????