Java - Ordenar cabecera JTable

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ordenar cabecera JTable

Publicado por José Maria (13 intervenciones) el 25/08/2016 10:49:05
Buenas me he creado un JTABLE con una cabecera tipica, de Nombre, Apellidos....Fecha etc....

Lo que quiero es el clasico boton en la cabecera que me los ordena de forma ascendente y descendente.

He probado el siguiente código:

//Agregamos la cabecera
model = new DefaultTableModel(null,cabecera);
//Meto el filtro de encabezado
TableRowSorter sorter = new TableRowSorter(model);
tabla.setRowSorter(sorter);

Pero el filtro que hace no es exacto, para lo String me va bien, pero para los numeros y las fechas no lo ordena bien, simplemente coge el primer numero,es decir:
Si la fecha es 20/07/2016 y otra fecha es 16/08/2016 me pone primero la del 16/08/2016 porque el 16 lo considera antes que el 20.

Por si alguien le ha pasado.

Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ordenar cabecera JTable

Publicado por Tom (1831 intervenciones) el 25/08/2016 17:25:42
Sí, seguramente le ha pasado a alguien más, sobre todo a quienes no se leen la documentación:
(Copio y pego de la doc. de TableRowSorter https://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableRowSorter.html)
"
TableRowSorter uses Comparators for doing comparisons. The following defines how a Comparator is chosen for a column:

If a Comparator has been specified for the column by the setComparator method, use it.
If the column class as returned by getColumnClass is String, use the Comparator returned by Collator.getInstance().
If the column class implements Comparable, use a Comparator that invokes the compareTo method.
If a TableStringConverter has been specified, use it to convert the values to Strings and then use the Comparator returned by Collator.getInstance().
Otherwise use the Comparator returned by Collator.getInstance() on the results from calling toString on the objects.
"
"
WARNING: DefaultTableModel returns a column class of Object. As such all comparisons will be done using toString. This may be unnecessarily expensive. If the column only contains one type of value, such as an Integer, you should override getColumnClass and return the appropriate Class. This will dramatically increase the performance of this class.
"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ordenar cabecera JTable

Publicado por José Maria (13 intervenciones) el 26/08/2016 11:12:28
Gracias por tu tiempo.
Intentaré sacarlo con la documentación, soy nuevo en esto y no estoy aún acostumbrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ordenar cabecera JTable

Publicado por José Maria (13 intervenciones) el 26/08/2016 11:18:00
Me leo la información, pero perdona mi torpeza, sigo sin entenderlo bien.

Por casualidad tienes algún ejemplo?

Gracias y perdona de nuevo las molestias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar