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.

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top