Saltar al contenido

Conservar la selección de JTable en el cambio de TableModel

Solución:

Debe conservar la selección y luego volver a aplicarla.

En primer lugar, deberá obtener una lista de todas las celdas seleccionadas.

Luego, cuando vuelva a cargar JTable con los nuevos datos, debe volver a aplicar mediante programación esas mismas selecciones.

El otro punto que quiero señalar es que, si el número de filas o columnas de su tabla aumentan o disminuyen después de cada recarga del modelo de tabla, no se moleste en conservar la selección.

El usuario podría haber seleccionado la columna 1 de la fila 2 con un valor que diga “Pato”, antes de la actualización del modelo. Pero después de la actualización del modelo, esos mismos datos ahora pueden aparecer en la fila 4, columna 1, y su celda original, fila 2, columna 1, podría tener nuevos datos como “Cerdo”. Ahora bien, si establece a la fuerza la selección en lo que era antes de la actualización del modelo, es posible que esto no sea lo que el usuario deseaba.

Por lo tanto, seleccionar celdas mediante programación podría ser un arma de doble filo. No lo hagas si no estás seguro.

Puede conservar automáticamente la selección de una tabla si la ESTRUCTURA de esa tabla no ha cambiado (es decir, si no ha agregado / eliminado ninguna columna / fila) de la siguiente manera.

Si ha escrito su propia implementación de TableModel, simplemente puede anular el método fireTableDataChanged ():

@Override
public void fireTableDataChanged() {
    fireTableChanged(new TableModelEvent(this, //tableModel
        0, //firstRow
        getRowCount() - 1, //lastRow 
        TableModelEvent.ALL_COLUMNS, //column 
        TableModelEvent.UPDATE)); //changeType
}

y esto debería garantizar que su selección se mantenga siempre que solo hayan cambiado los datos y no la estructura de la tabla. La única diferencia entre esto y lo que se llamaría si este método no se anulara es que getRowCount () – 1 se pasa para el argumento lastRow en lugar de Integer.MAX_VALUE, el último de los cuales actúa como un significante que no solo tiene todos los Los datos de la tabla cambiaron, pero el número de filas también puede haberlo hecho.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *