# JTable mit RowSorter und Drag & Drop: Zeile verschieben



## chr (13. Jun 2009)

Hallo,

Ich habe eine JTable mit einem Rowsorter. Dieser  sortiert die Zeilen beim Klick auf den TableHeader. Zusätzlich habe ich der Tabelle Drag & Drop-Funktionalität über eine von TransferHandler abgeleiteten Klasse hinzugefügt .

In der überschriebenen Methode importData möcht ich nun gerne die gewählten Tabellenzeilen verschieben.

Dabei tritt jedoch das Problem auf, dass nach einem sortieren der Tabelle zwar die Tabellendaten fein sortiert sind, aber das dahinterliegende DefaultTableModel nicht. Das Modell wird nicht mitsortiert. Somit ist m.E. die move Methode des DefaultTableModel nicht nutzbar, da die Einträge ja nicht in der sortierten Reihenfolge vorliegen.

Wie kann ich die Zeilen verschieben?

Aus meiner Sicht bleibt nur, das Verschieben nur in der Tabelle durchzuführen oder vor dem Verschieben das Model mit der Tabelle zu synchronieren. Für ersteres habe ich so gar keine geeigneten Methoden gefunden; Letzteres wollte ich mir ersparen.

Danke
Christian


----------



## eso (13. Jun 2009)

convertRowIndexToModel(viewRowIndex)
convertRowIndexToView(viewRowIndex)


----------



## chr (13. Jun 2009)

Leider habe die Funktionen m.E. nichts damit zu tun. 

Wenn durch das Sortieren ein Element an Position 0 steht, kann man mittels deiner genannten Methoden herausfinden, an welcher Stelle nun das Element im Model steht und umgekehrt.

Wenn ich per Drag und Drop das Element vom Position 0 nach 5 verschieben möchte. Mittels der Methode convertRowIndexToModel erfahre ich nun das das das Element 0 im Model bsp Position 7 ist. 

Ein Aufruf der Methode move des Modells funktioniert dann m.E. nicht?

Des Weiteren feuert der move ein tablechange; damit wird die Tabelle dann dem Modell angepasst. Da das Modell nun nicht der Sortierung entspricht...


----------



## André Uhres (20. Jun 2009)

"Drag&Drop" und "RowSorter" können nicht gleichzeitig funktionieren: die eine Funktion zerstört die Arbeit der anderen.


----------



## chr (20. Jun 2009)

Danke, das habe ich befürchtet


----------

