Hallo,
Grundlegendes:
ich möchte eine kalenderähnliche Komponente bauen und möchte dafür ein JTable nutzen. In diesem Control soll es möglich sein, Zellen zu markieren und farbig darzustellen.
Dafür habe ich folgenden Renderer gebaut, der eigentlich nur in der Lage sein soll, unterschiedliche Farben darzustellen. Evtl. soll später noch Text dazu kommen:
Ein eigenes Modell habe ich geschrieben. unter anderem soll es in der Lage sein, Initiale Zeilen einzufügen. Das mit den Zeilen funktioniert auch, nur das mit dem Renderer nicht.
Hier erzeuge und nutze das Modell, weise Objekten vom Type Color meinen Renderer zu und stelle noch ein paar Dinge ein.
Mein Problem ist, dass der Renderer für Color nicht zieht. Statt dessen wird immer die Stringrepräsentation für Color. Wo liegt mein Fehler. Seht ihr den und könnt ihn mir zeigen? Ich bin zu blöd dafür :-(
Grundlegendes:
ich möchte eine kalenderähnliche Komponente bauen und möchte dafür ein JTable nutzen. In diesem Control soll es möglich sein, Zellen zu markieren und farbig darzustellen.
Dafür habe ich folgenden Renderer gebaut, der eigentlich nur in der Lage sein soll, unterschiedliche Farben darzustellen. Evtl. soll später noch Text dazu kommen:
Java:
public class ColorRenderer extends JLabel
implements TableCellRenderer{
Border selectedBorder = null;
public ColorRenderer(String text) {
super(text);
setOpaque(true);
}
public ColorRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Color newColor = (Color)value;
setBackground(newColor);
if (selectedBorder == null) {
selectedBorder = BorderFactory.createMatteBorder(1,1,1,1,
Color.white);
}
setBorder(selectedBorder);
return this;
}
}
Ein eigenes Modell habe ich geschrieben. unter anderem soll es in der Lage sein, Initiale Zeilen einzufügen. Das mit den Zeilen funktioniert auch, nur das mit dem Renderer nicht.
Java:
public class WorkPackageCalendarTableModel extends AbstractTableModel{
...
public void addInitialLine(){
ArrayList al = new ArrayList();
for (int i = 0; i < columnNames.size(); i++){
al.add(new Color(255,255,255));
}
data.add(al);
this.fireTableDataChanged();
}
...
}
Hier erzeuge und nutze das Modell, weise Objekten vom Type Color meinen Renderer zu und stelle noch ein paar Dinge ein.
Java:
...
WorkPackageCalendarTableModel wpctm = new WorkPackageCalendarTableModel(project);
...
this.tabWPCalendar.setModel(wpctm);
this.tabWPCalendar.setDefaultRenderer(Color.class, new ColorRenderer());
...
TableColumnModel tcm = this.tabWPCalendar.getColumnModel();
while (cnt < tcm.getColumnCount()){
c = tcm.getColumn(cnt);
c.setPreferredWidth(20);
c.setResizable(false);
cnt++;
}
...
this.tabWPCalendar.getTableHeader().setPreferredSize(new Dimension(
this.tabWPCalendar.getTableHeader().getSize().width,60));
this.tabWPCalendar.getTableHeader().setReorderingAllowed(false);
this.tabWPCalendar.setRowSelectionAllowed(true);
this.tabWPCalendar.setColumnSelectionAllowed(true);
...
Mein Problem ist, dass der Renderer für Color nicht zieht. Statt dessen wird immer die Stringrepräsentation für Color. Wo liegt mein Fehler. Seht ihr den und könnt ihn mir zeigen? Ich bin zu blöd dafür :-(