¿Cómo se crea una tabla “JTable” en Java?

Una tabla JTable es una clase que se utiliza en Java para crear tablas interactivas y editables por los usuarios gracias a los componentes de la API Swing de dicho lenguaje de programación. Básicamente consiste en una interfaz gráfica que permite representar datos en forma de tabla, permitiendo visualizar e interactuar con los datos mostrados por el GUI de diferentes maneras, incluyendo entre otras editar el contenido de las tablas, modificar las dimensiones de las columnas y filas, ordenar las diferentes columnas a voluntad.

Creación de una JTable simple

El presente ejemplo busca construir una tabla simple con la siguiente información:

Primer NombreApellidoSexoEdad
AdrianaParadaF21
JuanCalamaroM40
RosalíaBernardF67
JulianaPérezF36
IsraelGonzálezM36

Esta tabla se mostrará en una ventana con una barra de desplazamiento. Cuando se utiliza una JTable para presentar datos en forma tabular, debemos tomar en cuenta que la JTable solo es la interfaz gráfica, y esta no contiene los datos que se van a presentar. Estos datos se deben incluir en la clase modelo. En otras palabras, para que nuestra tabla pueda mostrar cualquier dato, primero debemos instanciar un modelo de datos y luego pasarle este modelo a la JTable utilizando el constructor.

Creación de un marco

Debemos tomar en cuenta que la JTable necesita un marco en el que se pueda mostrar, por lo que este debe crearse primero, e incluir información como la posición y las dimensiones del marco, así como especificar si se mostrará el marco o no.

Un código genérico para lograr esto sería:

public class Uso_JTable {

                Public static void main(String[] args) {   

                JFrame mimarco=new MarcoTabla() ;

                               mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

                               mimarco.setVisible(true) ;

                }

}

class MarcoTabla extends JFrame {

                public MarcoTabla() {

                               setTitle(“Datos de Usuario”) ;

                               setBounds(200,200,700,500) ;

                }

}

El código anterior crea un marco visible ubicado en la posición 200×200 y de dimensiones 700×500 con título Datos de Usuario.

Ahora, crearemos una tabla que contendrá datos acerca de usuarios. Estos datos incluirán, para efectos de este ejemplo, el primer nombre, el apellido, el sexo y la edad.

Hay múltiples constructores que podemos utilizar para agregar los datos a la tabla que estamos creando. Uno de los constructores más sencillos permite tomar como argumentos dos arrays o matrices de datos:

JTable(Object[] [] rowData, Object[] columnNames)

Como se puede ver, este es un constructor simple para JTable que toma como argumento un primer parámetro que es un array de dos dimensiones de tipo Object en el que se incluirá la data correspondiente a cada fila (rowData), y un segundo parámetro que también es un array pero de una dimensión, también de tipo Object, en el que se incluirán los encabezados o nombres de las columnas (columnName).

En pocas palabras, si queremos utilizar este constructor, debemos declarar dos arrays, uno de dos dimensiones y uno de una dimensión. Esto lo hacemos dentro de la clase que construye el marco que mostramos anteriormente.

Comenzaremos declarando el array correspondiente a los encabezados de las columnas. Como son texto, estos serán del tipo String. Debajo de este, declararemos el array de dos dimensiones correspondiente a la data que se presentará en cada fila de la tabla. La declaración de los arrays se ve así:

                private String [] encabezadosColumnas={“Primer Nombre”, “Apellido”, “Sexo”, “Edad”} ;

                private String [] [] datosUsuarios={

                               {“Adriana”, “Parada”, “F”, “21”},

                               {“Juan”, “Calamaro”, “M”, “40”},

                               {“Rosalía”, “Bernard”, F, 67},

                               {“Juliana”, “Pérez”, “F”, “36”},

                               {“Israel”, “González”, “M”, “36”}

                };

En este código, hemos llamado “encabezadosColumnas” al array que contiene los nombres de las columnas, y “datosUsuarios” al array de dos dimensiones que contiene los datos de los cinco usuarios que serán incluidos en la tabla.

Ahora que tenemos la data que queremos que la JTable muestre, pasamos a utilizar el constructor para pasar esta data a la JTable. Esto lo hacemos dentro del marco que creamos anteriormente. Debemos darle un nombre a nuestra tabla, así que la llamaremos, para este ejemplo, tablaUsuarios:

JTable tablaUsuarios=new JTable(datosUsuarios, encabezadosColumnas) ;

Cómo agregar barras de desplazamiento y centrar

En este punto, ya tenemos una JTable que muestra una tabla sencilla con 4 columnas y 6 filas, que posee una primera fila con los encabezados de las columnas seguida de 5 filas con los datos de 5 usuarios. Sin embargo, puede que esta tabla no quepa en el marco de 700×500 que creamos al principio o, si cabe ahora, puede que más adelante le agreguemos datos sobre más usuarios y que llegue el punto en el que no quepa. En este caso, resulta útil añadir barras de desplazamiento para asegurar que toda la información de la tabla sea visible.

Esto lo hacemos por medio de JScrollPane. Además, también es conveniente especificar la posición de nuestra tabla dentro del marco. Para esto, utilizamos BorderLayout, de la siguiente manera:

add(new JScrollPane(tablaUsuarios), BorderLayout.CENTER) ;

El código final

Tras añadir todas las partes el código, debería verse así:

public class Uso_JTable {

                public static void main(String[] args) {   

                JFrame mimarco=new MarcoTabla() ;

                               mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

                               mimarco.setVisible(true) ;

                }

}

class MarcoTabla extends JFrame {

                public MarcoTabla() {

                               setTitle(“Datos de Usuario”) ;

                               setBounds(200,200,500,500) ;

                               JTable tablaUsuarios=new JTable(datosUsuarios, encabezadosColumnas) ;

                               add(new JScrollPane(tablaUsuarios), BorderLayout.CENTER) ;

                }

                private String [] encabezadosColumnas={“Primer Nombre”, “Apellido”, “Sexo”, “Edad”} ;

                private String [] [] datosUsuarios={

                               {“Adriana”, “Parada”, “F”, “21”},

                               {“Juan”, “Calamaro”, “M”, “40”},

                               {“Rosalía”, “Bernard”, F, 67},

                               {“Juliana”, “Pérez”, “F”, “36”},

                               {“Israel”, “González”, “M”, “36”}

                };

}

¿Cómo agregar otras funciones?

Además de la barra de desplazamiento, JTable permite agregar un sinfín de funciones para distintas aplicaciones. Se puede añadir la posibilidad de que el usuario ordene las filas a su gusto, se puede modificar la apariencia de la tabla modificando los colores de fondo de las celdas, mostrando o no los bordes, etcétera.

Referencias

Abellán, J. (2007a, febrero 4). Applet de ejemplo de TableModel para JTable. Recuperado de http://www.chuidiang.org/java/tablas/tablamodelo/applettabla.php

Abellán, J. (2007b, febrero 4). Ejemplo de TableModel en JTable. Recuperado de http://www.chuidiang.org/java/tablas/tablamodelo/tablamodelo.php

Píldoras Informáticas [pildorasinformaticas]. (2017, 20 septiembre). Curso Java. Anexos III. JTable I. Vídeo 267 [Archivo de vídeo]. Recuperado de https://www.youtube.com/watch?v=yH_g6QGFqes

Sensei, J. (2011, 24 enero). Cómo seleccionar una fila de un JTable de Java. Recuperado 13 de septiembre de 2021, de http://jedicerocool.blogspot.com/2011/01/como-seleccionar-una-fila-de-un-jtable.html