Java - Jtable

 
Vista:

Jtable

Publicado por Rodrigo (2 intervenciones) el 29/03/2007 18:50:44
Hola a todos.

Mi problema viene al hacer una Jtable para mostrar los datos que yo tengo en un arrayList de String. Como no existe constructor para ello en JTable, tengo que crearme mi propia clase que herede de JTable y mi propio modelo que herede de AbstractTableModel para que todo funcione correctamente. Yo tengo ArrayList del tipo:

Id:Nombre:Apellido
1:NombreEjemplo:ApellidoEjemplo

Evidentemente, las filas son cada elemento del ArrayList, y las columnas son cada uno de los elementos (parto los String por los "::").

Os pongo el codigo de ambas clases:

public class Tabla extends JTable{
public Tabla(String columnas, ArrayList<String> datos){
/* Se crea una tabla vacía. */
super();
/* Se le asigna el modelo preferido. */
setModel(new ModeloTabla(columnas,datos));
/* Ahora hay que rellenarla con los datos necesarios. Primero, las columnas. */

/* Después, los datos. */
for(int i=0;i<datos.size();i++){
Object[] tuplaPartida = datos.get(i).split(":");
for(int j=0;j<tuplaPartida.length;j++)
setValueAt(tuplaPartida[j],i,j);
}
}
}

public class ModeloTabla extends AbstractTableModel{
/* Elementos del modelo. */
String nombreColumnas;
ArrayList<String> datos;

public ModeloTabla(String columnas, ArrayList<String> datosTabla){
nombreColumnas = new String(columnas);
datos = datosTabla;
}

/*
* Método que retorna el número de filas de la tabla.
*/
public int getRowCount(){
return datos.size();
}

/*
* Método que retorna el número de columnas de la tabla.
*/
public int getColumnCount(){
Object[] campos = nombreColumnas.split(":");

return campos.length;
}

/* Método que retorna el valor de una determinada celda. */
public Object getValueAt(int fila, int columna){
String separador = new String(":");
/* Se parte la fila solicitada en campos. */
Object[] campos = datos.get(fila).split(":");

/* Se devuelve el dato solicitado. */
return campos[columna];
}
}

Weno, primero, esto es correcto, no? A mi me funciona, aunque no se si hay alguna solución mejor.... y segundo y + importante, ¿COMO SE PONE EL NOMBRE DE LAS COLUMNAS? me salen A,B,C... y así dependiendo del número de columnas.

Gracias de antemano y perdón por la longitud del post...
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