Java:JTable reordenando filas y actualizando
-
18-09-2019 - |
Pregunta
tengo un JTable
(ampliado) y una implementación de TableModel
, en el cual tengo los métodos...
moveEntryUp(int rowIdx)
moveEntryDown(int rowIdx)
...dentro de la implementación del modelo de tabla.He verificado que funcionan correctamente.
Sin embargo, tengo problemas para que los cambios realizados en el modelo de tabla se propaguen al modelo real. JTable
.En esta tabla solo permito la selección de una sola fila y tengo un botón separado para Arriba y Abajo.Cuando se elige una fila, necesito poder mover esa fila hacia arriba y hacia abajo, y preservar la selección.
P.ej.
Si mis filas son [A, B, C(selected)]
, y presiono el botón de arriba,
debería conseguir [A, C(selected), B]
.
Los diversos enfoques que he probado hasta ahora no actualizan los valores en JTable o pierden la selección.
NOTA:
Dudo en utilizar una solución que requiera una llamada explícita a repaint()
.
Supongamos que todas las células de la JTable
son no editable.
Solución
Respondiendo propia pregunta:
int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);
Cuando mTable
es el JTable, y mTableModel
es mi aplicación modelo de mesa, y es equivalente a mTable.getModel()
(y encasillado).
Debería haber empujado por más tiempo antes de pedir!