Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

Código JAVA: Cambiar el tamaño de las celdas de un JTable


Este post está orientado a la aplicación e implementación de un fragmento de código, que nos permitirá cambiar y/o modificar el tamaño (ancho/alto) de las celdas de nuestro JTable, mejorando la forma en la que se presentan los registros:

Método Constructor del Formulario:
public Formulario() {

      initComponents();

      TableColumn columna;
      columna=tabla.getColumnModel().getColumn(3);
      columna.setPreferredWidth(90);
      columna.setMaxWidth(90);
      columna.setMinWidth(90);
         
      tabla.setRowHeight(25);
      
}             


Instrucciones y Recomendaciones 

1- Para que nuestro código funcione, primero deberás importar las librerías necesarias, en este caso: 

import javax.swing.table.TableColumn; 





Ten presente que esta línea de código debe ir ubicada, debajo de la línea que define el nombre del paquete (package Formularios;), y por encima de la línea que define el nombre de nuestra Clase (public class Formulario...).

2- Copia y pega el código resaltado en azul, dentro del método constructor del formulario (JFrame), en el cual se encuentra el JTable al que quieres modificarle el tamaño de sus celdas. Se recomienda que todo código que se coloque dentro del método constructor de un JFrame, se haga después de la línea de código "initComponents();".
 
3- Lo primero que hacemos, es crear un objeto de la Clase "TableColumn", la cual nos permite manejar ciertos atributos de las columnas de un JTable; en este caso, a nuestro objeto lo llamaremos "columna". Teniendo en cuenta cada parte del código, esta línea quedaría de la siguiente forma:
TableColumn columna;
4- Procederemos a emplear el objeto "columna", creado en el punto anterior (punto 3); luego, capturaremos y/o almacenaremos allí, el modelo de la columna a la que queremos asignarle un nuevo ancho. Para ello, lo que hacemos es usar nuestro JTable, que en este caso hemos llamado "tabla"; seguidamente, le aplicamos el método ".getColumnModel()" (para obtener el modelo y/o la información de una columna de la tabla), y a continuación aplicamos el método ".getColumn(3)" (para llamar y/o utilizar una columna del JTable); podremos observar que a este último método le estamos pasando como parámetro, un valor entero, ese valor será el número correspondiente a la columna que queremos modificar; en esta ocasión es "3"; es decir, la cuarta columna del JTable, ya que la enumeración de las columnas de una tabla comienza desde 0:
columna=tabla.getColumnModel().getColumn(3);
 5- Lo que nos queda por realizar, será establecer la anchura que deseamos que tenga la columna seleccionada en el punto anterior (punto 4).
Emplearemos entonces nuevamente nuestro objeto "columna", y a este le aplicaremos el método "setPreferredWidth(90)", esto nos permitirá establecer el ancho preferido o en otras palabras el ancho por defecto que tendrá nuestra columna, lógicamente tendremos que pasarle como parámetro un valor entero, que en este caso ha sido "90", pero este valor dependerá de la longitud del título de nuestra columna y de los registros que allí se visualizarán, pero sobre todo, de nuestras necesidades y/o requerimientos. Hasta aquí nos bastaría para que tengamos celdas de una columna con una anchura deseada; sin embargo, si queremos que en ningún momento dicha columna pierda el ancho asignado (por redimensionamiento de las otras celdas del JTable), proseguiremos a emplear y/o aplicar a nuestro objeto "columna", los métodos "setMaxWidth()" (para establecer el ancho máximo) y "setMinWidth" (para establecer el ancho mínimo), a los cuales deberemos pasarle como parámetro, el mismo valor entero que usamos en el ancho preferido; es decir, "90"; pero con la posibilidad de pasarles otros valores, eso sí, teniendo como referencia el valor de la anchura preferida:
columna.setPreferredWidth(90);
columna.setMaxWidth(90);
columna.setMinWidth(90);
6- Hay ocasiones en las que deseamos o necesitamos ocultar una columna de nuestra tabla para no hacerla visible al usuario, ya que la información que esta contiene no es relevante para el mismo, pero sí para nosotros a la hora de realizar ciertas operaciones; entonces, inmediantamente debajo de la última línea del código del punto anterior (5), procederemos a colocar lo siguiente:
tblDatos.getTableHeader().getColumnModel().getColumn(3).setMaxWidth(0);  
En esta línea de código lo que hacemos es, primeramente llamar a nuestra tabla "tblDatos", le aplicamos el método ".getTableHeader()" que nos va a permitir trabajar con la cabecera de la tabla, más exactamente con los encabezados de cada columna; ahora emplearemos el método ".getColumnModel()"; luego, obtenemos la columna que queremos ocultar con ".getColumn(3)"; y para finalizar, establecemos el tamaño máximo que tendrá la cabecera de dicha columna ".setMaxWidth(0)".
Vale la pena recalcar, que para que nuestra columna quede totalmente oculta, deberemos pasarle como parámetro a los distintos tamaños (preferido, mínimo y máximo) que vimos en el punto 5, el valor "0" (cero).

7- Luego de establecer el ancho de nuestra columna, proseguiremos a darle un alto específico a las celdas de nuestro JTable. Este proceso es más sencillo y sólo nos bastará una sola línea de código; en la cual, procedemos a llamar nuestro JTable al que hemos llamado "tabla", aplicándole seguidamente el método ".setRowHeight()" (permite fijar el alto de las filas de una tabla), al cual le pasaremos como parámetro, un valor del tipo entero (int), en este caso "25":
tabla.setRowHeight(25); 
8- Ahora sólo bastará con ejecutar tu proyecto y hacer las respectivas pruebas.

9- Si deseas saber cómo cambiar el tamaño de las celdas de un JTable, sin necesidad de código, y de forma netamente gráfica, usando un entorno de desarrollo integrado como Netbeans IDE, puedes visitar el siguiente enlace:

 
10- Si te interesa, puedes seguir el Curso de Java, que se está realizando mediante videotutoriales y con eBooks, en el Blog UH T.I.S

¿Conoces una forma más óptima de realizar el anterior procedimiento?, no dudes en compartirla con todos nuestros amigos de la web.

Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en las redes sociales.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


6 comentarios:

  1. Buenas, me ha encantado la entrada, pero una puntualización y corrígeme si me equivoco. Para tener una columna con un valor que vamos a utilizar pero que no queremos que se muestre, no sería necesario meterlo en la tabla ya que lo tienes en el modelo y podrías acceder a él directamente en lugar de intentar recuperarlo de la tabla, dejando solo en la tabla aquellos campos que se muestran realmente.

    ResponderEliminar
    Respuestas
    1. Saludos.
      Nos alegra saber que te haya encantado este post.
      Muy buena tu apreciación; sin embargo, desde mi punto de vista, si te das cuenta todo lo que tú haces en el modelo y al aplicarlo a tu tabla, se verá reflejado en la misma; es decir, si agregas datos a tu modelo, cuando asignes este mismo a tu tabla, todos esos datos se mostrarán en ella. (Puedes verlo en este post -> Código JAVA: Agregar datos de un formulario a una tabla (JTable), y eliminar una fila y/o registro de una tabla (JTable) )

      Si lo que deseas es no mostrar y/o adjuntar columnas de ciertos datos, puedes optar por sólo mostrar en tu JTable lo necesario, y a la hora de seleccionar un determinado registro en la tabla, puedes realizar una consulta a la base de datos para traer ese dato adicional.

      Eliminar
  2. Hola que tal, yo tengo un problema con esto, a ver, resulta que tengo un jtable al que le introduzco datos desde una bd de mysql.
    Al correr el programa las columnas me aparecen con el ancho que le e especifícado, pero al pulsar el botón para introducir los datos dentro del jtable no se que pasa que no se mantienen los anchos, las columnas vuelven a su posición original.
    También e probado con "tabla.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);" y nada.
    Tienes idea de porque no se mantiene el ancho?
    Que es lo que estoy haciendo mal?
    Gracias

    ResponderEliminar
    Respuestas
    1. Lo que puede estar ocurriendo es que estás trabajando con un nuevo modelo de tabla (un objeto del tipo DefaultTableModel), y se lo estás aplicando a tu JTable a la hora de mostrar o introducir los datos, lo cual va a resetear el ancho de tus celdas.

      Revisa, y en caso de que continúe el inconveniente, te sugiero que me regales el código donde le asignas el tamaño a tus celdas (al ejecutarse el programa), y el código desde el cual introduces los datos a tu tabla.

      Eliminar
  3. Respuestas
    1. Saludos estimado Carlos Rodas, es un gusto saber que este post te ha ayudado en tu proceso de programación en JAVA, nos gustaría que compartieras este blog en tus redes sociales y así poder seguir colaborándole a muchos más colegas programadores.

      ¡CRISTO VIENE PRONTO, ENTRÉGALE TU CORAZÓN!

      Bendiciones...

      Eliminar