Java: JTable Neuordnungs Zeilen und refresh
-
18-09-2019 - |
Frage
Ich habe einen JTable
(extended) und eine Implementierung von TableModel
, in denen ich die Methoden ...
-
moveEntryUp(int rowIdx)
-
moveEntryDown(int rowIdx)
... in der Tabelle Modellimplementierung. Ich habe festgestellt, dass diese ordnungsgemäß funktionieren.
Aber ich habe Probleme in die Änderungen in der Tabelle Modell des tatsächlichen JTable
zu propagieren gemacht zu bekommen. In dieser Tabelle erlaube ich nur einreihig Auswahl und verfügen über separate Taste für oben und unten . Wenn eine Zeile gewählt wird, muss ich der Lage sein, diese Zeile nach oben und unten zu bewegen, und erhalten Sie die Auswahl.
z.
Wenn meine Zeilen [A, B, C(selected)]
sind, und ich drücken Sie die Taste nach oben,
Ich sollte [A, C(selected), B]
erhalten.
Die verschiedenen Ansätze, die ich versucht habe bisher entweder nicht die Werte in der JTable, oder verlieren die Auswahl aktualisieren.
Hinweis:
Ich bin zögerlich, eine Lösung zu verwenden, die einen expliziten Aufruf repaint()
erfordert.
Es sei angenommen, dass alle Zellen in der JTable
sind nicht bearbeitet werden.
Lösung
Die Beantwortung eigene Frage:
int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);
Wo mTable
ist die JTable und mTableModel
ist mein Tischmodell Implementierung und entspricht mTable.getModel()
(und Typumwandlung).
haben sollte stocherte länger, bevor Sie fragen!