Dyn. jTable inkl. JCheckbox

hankenberge

Mitglied
Ich habe mich durch die anderen Beiträge gesurft und glaube das beste übernommen, so alla best of, aber trotzdme will es nicht zusammen funktioneren.
Problem:

ich brauche eine jTable mit 2 Spalten und eine dynamische Anzahl an Zeilen.
In der ersten Spalte soll ein String eingetragen werden, in der zweiten Spalte eine JCheckbox.

die Anzahl der Zeilen muss dynamisch verringer- und erweiterbar sein.

Ich habe bis jetzt ein AbstractTatenModel erzeugt, nach dem Beispiel von Snape: http://www.tutorials.de/forum/showthread.php?s=&threadid=167267&highlight=JTable erstellt.

Wenn ich eine neue Zeile anlege, rufe ich eine Funktion auf, die einen Vector mit allen Daten an das TableModel übergibt auf.
Code:
tableModel.setTableValue(g_v_mycomponent);
Dieses Funktioniert auch Das Model erhält den neuen Eintrag
Im Anschluss rufe ich die UpdateFunktionen auf
Code:
tableModel.TableUpdate();
mit
Code:
public void TableUpdate(){
	fireTableStructureChanged();
	fireTableDataChanged();
}

Die Tabelle wird nicht neugezeichnet. Hat einer eine Idee?

Als nächstes wmöchte ich die JCheckbox einbinden. Dazu habe ich mich am Beispiel von Tom http://www.tutorials.de/tutorials169772.html gehalten.
Code:
final JCheckBox jCheckBox = new JCheckBox();
TableColumnModel colmModel = jTable.getColumnModel();
TableColumn tc1 = colmModel.getColumn(1);
tc1.setCellEditor(new DefaultCellEditor(jCheckBox));
aber das bekomme ich bei einer festenanzahl an Zeilen hin (ohne Tablemodel) aber wenn es dynamisch (mit Tablemodel) sein soll, so passiert gar nichts.

Bin um alle Tips dankbar

ingo
 
Original geschrieben von hankenberge
>Problem:
>ich brauche eine jTable mit 2 Spalten und eine dynamische Anzahl an Zeilen.
In der ersten Spalte soll ein String eingetragen werden, in der zweiten Spalte eine JCheckbox.

>die Anzahl der Zeilen muss dynamisch verringer- und erweiterbar sein.

>Ich habe bis jetzt ein AbstractTatenModel erzeugt, nach dem Beispiel von Snape: http://www.tutorials.de/forum/showthread.php?s=&threadid=167267&highlight=JTable erstellt.

>Wenn ich eine neue Zeile anlege, rufe ich eine Funktion auf, die einen Vector mit allen Daten an das TableModel übergibt auf.
Code:
tableModel.setTableValue(g_v_mycomponent);
>Dieses Funktioniert auch Das Model erhält den neuen Eintrag

Nur den neuen? Oder wurde er hinzugefügt?

>Im Anschluss rufe ich die UpdateFunktionen auf
Code:
tableModel.TableUpdate();
mit
Code:
public void TableUpdate(){
	fireTableStructureChanged();
	fireTableDataChanged();
}

Normalerweise sollte ein fireTableDataChanged vollkommen reichen.

>Die Tabelle wird nicht neugezeichnet. Hat einer eine Idee?

Hast Du ein eigenes TableModel?

>Als nächstes wmöchte ich die JCheckbox einbinden. Dazu habe ich mich am Beispiel von Tom http://www.tutorials.de/tutorials169772.html gehalten.
Code:
final JCheckBox jCheckBox = new JCheckBox();
TableColumnModel colmModel = jTable.getColumnModel();
TableColumn tc1 = colmModel.getColumn(1);
tc1.setCellEditor(new DefaultCellEditor(jCheckBox));
>aber das bekomme ich bei einer festenanzahl an Zeilen hin (ohne Tablemodel) aber wenn es dynamisch (mit Tablemodel) sein soll, so passiert gar nichts.

Dazu wäre es hilfreich zu wissen, was Du machst und wie genau sich "gar nichts" äussert.

>Bin um alle Tips dankbar

>ingo

Ein Tip, wenn Du dynamisch mit Tabellenzeilen umgehen möchtest:
Benutze TableRows, sie vereinfachen das Handling um ein vielfaches. Nein, TableRows sind keine Klasse aus der Java Standardbibliothek. Suche hier im Archiv, da müssten noch ziemlich detaillierte Beispiele von mir zu finden sein.
Mag evtl. auf den ersten Blick etwas umständlich oder kompliziert aussehen, aber so ist es sehr einfach, Zeilen hinzuzufügen, zu löschen, zu sortieren usw.
 
anders gelöst

hey snape.

danke für den tip. werde den mir merken. habe dein beispiel auch gefunden

habe es nun aber mit einer JList gelöst in der ich CeckableItem eingefügt habe, war ein beispiel deiner link-liste

danke


Ingo
 
Zurück