Ir al contenido principal

Establecer el tamaño de las columnas de un JTable en Java

Java Si has trabajado con JTables en Java te sabrás que al momento de agregar columnas los tamaños de las mismas son iguales, no importa la cantidad o longitud de los datos, si tienes 2 o 5 columnas, si algunos datos son enteros y otros son cadenas, el chiste es que todos los tamaños son iguales.

Esto resulta algo incómodo (por no decir bastante) ya que normalmente deseamos que cada columna pueda tener su ancho determinado. Afortunadamente esto se resuelve de forma bastante sencilla.

Aquí el código:

public void setAnchoColumnas(){       
        JViewport scroll =  (JViewport) tbLista.getParent();
        int ancho = scroll.getWidth();
        int anchoColumna;
        TableColumnModel modeloColumna = tbLista.getColumnModel();
        TableColumn columnaTabla;
        for (int i = 0; i < tbLista.getColumnCount(); i++) {
            columnaTabla = modeloColumna.getColumn(i);
            switch(i){
                case 1: anchoColumna = (30*ancho)/100;
                        break;
                case 2: anchoColumna = (50*ancho)/100;
                        break;
                case 3: anchoColumna = (20*ancho)/100;
                        break;
            }                     
            columnaTabla.setPreferredWidth(anchoColumna);           
        }
    }
 

 

Ahora la explicación:

  1. El ejemplo anterior engloba todos los procedimientos en el método setAnchoColumnas(), que no requiere parámetros ni devuelve valores.
  2. Obtenemos el JViewport (que es el área visible de la tabla) y guardamos el ancho total del área visible en una variable de tipo int de nombre ancho.
  3. Una vez hecho esto obtenemos el modelo de las columnas de la tabla en la variable modeloColumna.
  4. Posteriormente hacemos un ciclo que vaya recorriendo todas las columnas de la tabla, en cada pasada obtenemos la columna correspondiente y asignamos su ancho con la instrucción anchoColumna = (30*ancho)/100; (el número 30 en este caso representa el porcentaje del ancho total que ocupará la primera columna, 50 la segunda y 20 la tercera).
  5. Ya que tenemos el ancho de la columna en la variable anchoColumna lo hacemos visible en la tabla con la instrucción columnaTabla.setPreferredWidth(anchoColumna);  

En este caso estoy manejando una tabla con únicamente 3 columnas y el tamaño por porcentajes para que sea un tanto más manejable, puedes manejarlo por pixeles de igual manera y con ‘n’ cantidad de columnas, ahora sí que el límite es el que tú te impongas pero esto te sirve como base.

 

Alguna duda o algo qué decir? Deja tu comentario. Saludox.

Comentarios

  1. Gran Apunte tio, es de lo mejor que he visto para personalizar un JTable, trabajar con porcentajes, como si de una tabla de html se tratara

    ResponderEliminar
  2. Gracias por tu comentario, sigue visitando mi blog. Saludox.

    ResponderEliminar
  3. La verdad es qeu es lo mas completo que he encontrado en cambio de tamaño de columnas.. muy buena explicacion
    yo tengo un problema no se si es posible resolver..quizas me puedas comentar si se puede:

    tengo una tabla, con el numero de columnas variable (depende de los componentes de un vector que viene de otra ventana) pueden ser desde 3 hasta 50. y ademas inicialmente estan vacias

    Entonces cuando mando que muestre muchas solo muestra los puntos suspensivos, yo lo que quiero es que se ajuste al tamaño de la cabecera de la columna, esto es posible..
    asignarle tañamo segun en nombre de la cabecera y no segun los pixels

    ademas que salga la barra de desplazamiento horizontal..que ahora mismo como se hacen tan pequeñas las columnas no sale.
    o sino darme otra idea de como lo podria resolver

    muchisimas gracias

    ResponderEliminar
  4. Excelente hermano.

    Excelente.

    ResponderEliminar
  5. excelente metodo para el manejo de tablas, mis respetos, sigue creando mas cosas asi, que aca afuera hay un buen de faltos de experiencia como yo.

    necesitaba un metodo como este para mi proyecto, muchas gracias
    saludos

    enrique_cobranza@live.com.mx

    ResponderEliminar
  6. Perdonen la pregunta que me estoy iniciando en java,...pero tengo este problema y no se como implementar esta codigo. lo hice como una clase y me da error en JViewport scroll = (JViewport) tbLista.getParent(); especialmente en el ..getParent();

    si alguien me pudiera orientar ,.....

    ResponderEliminar
  7. muy buena aportacion graxias me sirvio mucho :)

    ResponderEliminar
  8. este codigo es de otro...so inutil
    http://es.debugmodeon.com/articulo/establecer-el-tamano-de-las-columnas-de-un-jtable-en-java

    ResponderEliminar
  9. BIEN BROER, MUY UTIL... MUY AGRADECIDO x tu aporte!

    ResponderEliminar
  10. Excelente aporte. Ya lo probé y funciona. tuve que hacerle dos correcciones. La línea 4 tuve que inicializarla en 0, sino manda error. Como el ciclo for inicia en 0, el primer case debe ser 0 y no 1.

    ResponderEliminar
  11. SOY NUEVO EN JAVA , QUISIERA PREGUNTAR EN DONDE VA ESTA LINEAS TBLISTA LA ESTOY REEMPLAZANDO POR EL NOMBRE DE LA VARIABLE JTABLE QUE ES TBLEMPLEADOS PERO NO ME RESULTA

    ResponderEliminar
  12. Gracias!!!! es lo mejor que he encontrado.

    ResponderEliminar
  13. Buen aporte amigo pero tengo una duda no se si me puedas auxiliar quisiera que se viera en el scroll la barra horizontal como le hago ?

    ResponderEliminar
  14. Hola Buen Día, ami este codigo no me da ni un error pero no me respeta el Tamaño de la Columna si alguien me puede Ayudar!!!

    ResponderEliminar
  15. Muchas gracias enserio. Me sirvio muchisimo.

    Besos

    ResponderEliminar
  16. Esta buenazo, me ayudo mucho en poco tiempo XD

    ResponderEliminar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social?
Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo.
En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber.
Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore
Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo…

Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de domici…

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans.

Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle. En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos.Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece.

La solución a tu problema tras el salto...