Hört sich gut an. Ich habe aber trotzdem noch ein kleines
Verständnisproblem mit dem Object. Beinhaltet jede Spalte ein
solches Object ? Dann hat doch die Spalte die Eigenschft des
Objects. Wie kann
Nein. Nur wie in meinem Beispiel die Spalte 0 jeder Zeile, der Rest enthält Strings (oder was immer die toTableRow() liefert)
ich dann in einer Spalte z.B. eine CheckBox anzeigen.
Nur anzeigen? Dann einen Renderer. Auch editieren, dann einen Editor und einen Renderer.
JCheckBox check = new JCheckBox();
DefaultCellEditor edi = new DefaultCellEditor(check);
tabelle.getColumnModel().getColumn(1).setEditor(edi);
Und schon hast du in der gesamten Spalte 1 eine Checkbox als Editor. da macht es Sinn, die toTableRow etwas so zu machen:
public Object[] toTableRow(){
return new Object[]{this, new Boolean(true), „Ein String“};
}
Dein Model muss nur noch bei der Methode
isCellEditable(int row, int col){ //hies die so???
if (col == 1) return true;
…
}
liefern. Nun kannst du editieren, siehst aber in der Darstellung nur ein true oder false (eben die toString() Methode eines Boolean Objektes). Damit das auch schön angezeigt wird brauchst du noch einen Renderer, der von JCheckBox erbt. Am besten eine innere Klasse in deinem Fenster
class CheckRenderer extends JCheckBox implements TableCellRenderer{
public Component getTableCellRendererComponent(…, Object value, …){
//oder so ähnlich, mit jede menge Parameter, unter anderem value
this.setSelected(((Boolean)value).booleanValue();
//damit setzt du den Renderer (also die Checkbox) auf den Wert dr Zelle
return this;
}
}
Diese Klasse musst du nur noch der Zelle mitgeben, ähnlich dem Editor:
tabelle.getColumnModel().getColumn(1).setRenderer(new CheckRenderer());
Wenn ich die Spalten sortieren will geht das dann eigentlich
noch ?
Sortieren (z.B. auf Tabellenkopf klicken) ist keine Standardfunktion (zumindest in 1.3, ist das in 1.4 noch so??) und komplizierter. (und sprengt das hier deutlich)
Du sieht ich bin noch Änfanger in diesen Dingen. Ich bitte um
Nachsicht.
macht ja nix. Tabellen sind allerdings auch das komplizierteste was man sich so vornehmen kann, es geht aber auch fast alles.
Hättest Du vielleicht ein kleines Code-Beispiel.
Habs versucht.
Danke
Arni
Bitte. Michael