2010-04-17 15 views
13

Tengo un JTable en la que he llamado el método table1.setAutoCreateRowSorter(true);. Así que esto funciona bien. Pero también tengo un methos en mi clase JFrame que se activa cuando presiono un botón. Se pone las filas índices seleccionados utilizando este código int selectedRows[] = this.table1.getSelectedRows();. Y muestra una ventana de edición para la primera fila correspondiente en el intervalo seleccionado.Java: índice seleccionado de filas no hace cambios cuando ordenados

El problema es que si no hace clic en los encabezados de columna (me refiero a que no Sorte en absoluto) mi método funciona perfecto. Pero cuando ordeno la fila, los índices de las filas no parecen cambiar en absoluto, lo que da como resultado una ventana de edición para la fila anterior que estaba inicialmente en esa posición antes de realizar cualquier clasificación.

estoy usando JDK 6 podría dar anyonw ma una punta?

Respuesta

17

El modelo subyacente no cambia el orden. Solo la vista cambia. Puede leer más sobre esto en Sun's tutorial. Necesitará usar JTable.convertRowIndexToView() y JTable.convertRowIndexToModel().

+0

Gracias chicos ahora puedo encontrar el valor seleccionado correcta usando 'table1.getModel() (getValueAt table1.convertRowIndexToView (selectedRows [i]), 0);. ' – adrian7

5

Debe usar convertRowIndexToView(int) y convertRowIndexToModel(int) para convertir los índices del modelo (datos subyacentes) y ver los índices.

Cuestiones relacionadas