varias una seleccionar seleccionada seleccion quitar primera obtener los filas fila eliminar desde datos como codigo java swing jtable tablerowsorter

java - una - Fila seleccionada en JTable junto con la ordenación



seleccionar una fila de un jtable desde codigo (3)

Tengo un problema muy extraño con JTable.

Pongo datos en JTable de DB. Cuando el usuario hace doble clic en cualquier celda, copia el contenido de la celda de la primera columna de la fila donde el usuario hizo doble clic. Hasta ahora, funciona perfecto.

El problema surge cuando el usuario ordena el JTable haciendo clic en el encabezado. cuando la tabla se ha ordenado y ahora cuando el usuario hace doble clic en cualquier fila, no guarda lo que está almacenado actualmente en la primera columna de esa fila. Copia lo que originalmente se almacenó en la primera columna de esa fila cuando no se ordenó JTable.

¿Algunas ideas?



Intente ordenar sus datos de JTable TableModel también. Jtable -> TableModel es el que contiene los datos reales. JTable es solo una vista.


Problema:

El problema aquí es que está obteniendo los índices de filas iniciales en JTable TableModel , y no los índices de fila relevantes que se muestran en la vista de tabla.

Solución:

Puede correlacionar los índices mostrados de una jTable ordenada con sus relevantes en el modelo de datos utilizando el método convertRowIndexToModel (índice) que toma la entrada del índice de fila en la vista y devuelve el índice de la fila correspondiente en el modelo.

Digamos que tiene la siguiente jTable:

TableModel myModel = createMyTableModel(); JTable table = new JTable(myModel); table.setRowSorter(new TableRowSorter(myModel));

Y luego buclee los índices del modelo y use este método con cada índice para obtener su correspondiente en el modelo de TableModel :

table.getRowSorter().convertRowIndexToModel(0); // index 0 here