Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   ordenar tabla por columnas (http://www.forosdelweb.com/f45/ordenar-tabla-por-columnas-583456/)

polako_83 06/05/2008 09:20

ordenar tabla por columnas
 
Hola a todos!

Os cuento un problemilla.

Tengo que mostrar una tabla con unos resultados de unos estudios. Estos estudios tienen un numero. Me gustaria que cuando apareciera la tabla apareciera ordenada por los numeros de los estudios.

Tengo este codigo para cargar la tabla:

jTableResultados.setModel(modeloTabla);
TableRowSorter<ModeloTablaResultados> ordenador = new TableRowSorter(modeloTabla);
jTableResultados.setRowSorter(ordenador);

Entonces la tabla aparece con los resultados en un orden aleatorio y posteriormente, si pincho sobre la cabecera de la columna de los numeros se ordena como quiero.

¿Como puedo indicar que me aparezca ordenada por la columna de los numeros de estudio directamente, sin necesidad de pinchar sobre la cabecera?

Gracias por vuestra atención!

goncafa 06/05/2008 10:19

Re: ordenar tabla por columnas
 
Me parece que tu solucion es traerla ordenada desde la consulta SQL

ORDER BY NOMBRE_CAMPO

djagu_26 06/05/2008 12:31

Re: ordenar tabla por columnas
 
la solucion es la que te paso goncafa pero ademas la JTable tiene una opcion para crear sort automatico de las columnas cuando se les hace doble clic en el header de la columna
jTable1.setAutoCreateRowSorter(true);
saludos

usuarioprogramador 17/12/2009 06:06

Respuesta: ordenar tabla por columnas
 
Hola, necesito algo parecido a lo que comentais.
En mi caso, en lugar de una tabla jtable tengo una tabla swingx (tablax) que ordena ella solita las columnas. El problema es que lo ordena correctamente
cuando son strings pero cuando son integer o date lo ordena como si fuesen igualmente strings.

En la funcion que expongo a continuacion genero el modelo de datos de forma dinamica con informacion obtenida de la base de datos y luego se lo asigno a la tabla:

arDatos[i] es un array con la informacion que necesito


Object[][] data = new String[num_datos][3];

String[] columnNames = {"columnaTexto", "ColumnaEntero", "ColumnaFecha"};

for (int i = 0; i < num_datos; i++) {
ClaseConDatos s = (ClaseConDatos) arDatos[i];

if(s == null){
break;
}else{

data[i][0] = s.getTexto();
data[i][1] = Integer.toString(s.getEntero());
data[i][2] = toFecha(s.getFecha());

}
}

DefaultTableModel dtm = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {return false;}
};


jXTable1.setModel(dtm);



Como podria anadir por ejemplo al DefaultTableModel otro argumento que fuesen los tipos de las columnas?
Hay algun modo de poder ordenar la columnas por enteros o fecha?
He probado de forma estatica y lo hace perfectamente si le dices el tipo de datos que va en cada una de ellas.
pero no se muy bien como hacerlo de forma dinamica.
Puede que sea mejor usar un jtable normal y ordenarlo con un comparador? he visto varios ejemplos....

gracias!

GreenEyed 17/12/2009 06:25

Respuesta: ordenar tabla por columnas
 
Si le pones los datos como String, es normal que te los ordene como String, ya que el no sabe que tipo de dato hay dentro.

Para que te los ordene bien tendrías que darle los datos en su forma "natural", como Integer o Date, y así sabrá como ordenarlos.

S!


La zona horaria es GMT -6. Ahora son las 08:18.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.