Foros del Web » Programación para mayores de 30 ;) » Java »

ordenar tabla por columnas

Estas en el tema de ordenar tabla por columnas en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/05/2008, 09:20
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 15 años, 11 meses
Puntos: 0
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!
  #2 (permalink)  
Antiguo 06/05/2008, 10:19
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Re: ordenar tabla por columnas

Me parece que tu solucion es traerla ordenada desde la consulta SQL

ORDER BY NOMBRE_CAMPO
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 06/05/2008, 12:31
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
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
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
  #4 (permalink)  
Antiguo 17/12/2009, 06:06
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
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!
  #5 (permalink)  
Antiguo 17/12/2009, 06:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.