Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2011, 12:51
javiershj
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 10 meses
Puntos: 1
Pregunta Problema ordenacion Jtable

Hola a todos,


Tengo un problema con un Jtable. El Jtable tiene un modelo que extiende de la clase AbstractTableModel y tiene además un TableRowSorter para ordenar las columnas a gusto del usuario.

Voy a poner un ejemplo del problema:

El usuario rellena unos datos de busqueda, le da al botón buscar y los datos son cargados en la JTable (imaginemos 10 filas). El usuario establece que quiere ordenar por la columna de fecha.

Ahora redefine la búsqueda, y esta nueva busqueda devuelve 4 filas que sustituyen a las 10 filas anteriores. En este momento se arroja una ArrayIndexOutOfBoundsException.

Si como resultado de la segunda busqueda se obtienen más filas que en la primera no ocurre el error. Y solo ocurre si se estableció ordenación en alguna columna.

Este es el metodo que utilizo para rellenar el modelo. Se ejecutaria cada vez que se quieren meter los datos en la tabla. En el ejemplo dado, se ejecutaria primero con las 10 filas (1o elementos en la lista pasada por parámetro) y luego con las 4 filas.


public boolean crearDatos(List lista) {

try {
this.datos = new Vector>();

if (lista != null && lista.size() > 0) {
for (int i = 0; i < lista.size(); i++) {
Vector vector = new Vector();
/* CODIGO OMITIDO DONDE SE RELLENA EL VECTOR */
modeloDatos.addRow(vector);
}
}
if (datos != null && datos.size() > 0) {
this.fireTableRowsInserted(0,this.datos.size()-1);
}
updateUI();
} catch (Exception e) {
LogController.getLog().error( "Error en crearDatos :" +e.getMessage());
return false;
}
return true;
}

Lo que creo que ocurre es que aunque cree las 4 nuevas filas, el rowsorter no se actualiza con el cambio y cree que sigue teniendo 10. ¿Qué debería hacer?

Un saludo y gracias de antemano