celdas ajustadas JTable

alberto_ca
26 de Junio del 2003
Hola! A ver si alguien podia decirme como puedo hacer para que las celdas de una jtable se ajusten al contenido mas largo. Espero explicarme bien. Que si en una columna la cadena mas larga es de 20 caracteres, que todas las celdas de esa columa tengan ese tamaño. Gracias.

jorge_iv
26 de Junio del 2003
Hola.

Yo tengo una forma de hacer que el jTable se ajuste al tamaño que quiero, no digo que es la mejor forma pero algo es algo. Si alguien tiene una idea para mejorarlo vienvenido sea..

consta de dos partes:
la primera un metodo que recibe un array con los datos, y un vector con los rotulos de las columnas. este compara uno a uno los elementos y
devuelve un array con el tamaño preferido de cada
columna.

Segundo.
Se crea otro metodo que se encarga de aplicarle a la tabla el tamaño mediante un TableColumn.


hay te envio los dos codigos, sin responsabilidad alguna aunque se que funcionan bien.


primer método:

static public int [] tamañoPreferido (String [][] datos,String[] titulo) {
int [] retorno = new int [datos[0].length];
int [] tamTitulo = new int [titulo.length];
JLabel bufer = new JLabel ("H");

bufer.setFont(new java.awt.Font(verArrendadores.getFonts(), 0, verArrendadores.getSizeFont()));

for(int a=0; a<titulo.length;a++) {
bufer.setText(titulo[a]);
alto = bufer.getPreferredSize().height;
tamTitulo[a] = bufer.getPreferredSize().width;
}

retorno[0] = bufer.getPreferredSize().width;

for (int a=0; a<datos[0].length; a++) {
for (int b=0; b<datos.length; b++) {
bufer.setText(datos[b][a]);
if(retorno[a]<bufer.getPreferredSize().width) {
if(bufer.getPreferredSize().width > tamTitulo[a]) {
retorno[a] = bufer.getPreferredSize().width;
}
else {
retorno[a] = tamTitulo[a];
}
}
}
}
return retorno;
}


segundo metodo
void tamaño () {
// creo un TableColumn para manejar el formato de la columna
TableColumn column = null;

// tamaño preferido es una array del tipo integer que recibe los valores que
// retorna el metodo que nos da el tamaño preferido de la tabla

this.tamañoPrererido = Tablas.tamañoPreferido(valorCeldas,titulo);

// mediante este ciclo le doy a la tabla su tamaño
// jTable1 se llama mitabla
for(int a=0; a<tamañoPrererido.length; a++) {
column = jTable1.getColumnModel().getColumn(a);
column.setMinWidth(tamañoPrererido[a]);
column.setPreferredWidth(tamañoPrererido[a]);
}
}