17 septiembre 2005

Uso rápido del JTable

Veo en muchos foros que la gente pregunta cómo manejar el JTable. Voy a tratar de contar el uso más sencillo que deja libertad para modificar luego los datos sobre la marcha.

Para usar tablas, hay que distinguir dos cosas. Por un lado tenemos el JTable, que es lo que vemos. Por otro lado tenemos los datos, que es lo que queremos pintar en el JTable. Los datos pueden guardarse en cualquier clase que implemente TableModel. Java nos ofrece DefaultTableModel, una clase que implementa TableModel y nos permite añadir, modificar y borrar esos datos.

La forma sencilla de juntar todo esto es

DefaultTableModelo datos = new DefaultTableModel();
JTable tabla = new JTable(datos);

y ya está.

Ahora podemos añadir columnas a nuestros datos llamando a

datos.addColumn ("Nombre columna");

y podemos añadir, borrar y modificar

datos.addRow ( arrayConLosDatosParaUnaFila );
datos.removeRow ( fila );
datos.setValueAt (dato, fila, columna);

Echando un ojo en la API de DefaultTableModel, veremos muchos más métodos que pueden ser útiles.

Tengo un tutorial más completo sobre el modelo de datos en http://www.chuidiang.com/java/tablas/tablamodelo/tablamodelo.php

También se puede cambiar el cómo pintar los datos o cómo editarlos. De esta forma podremos poner iconos en las celdas, hacer que salgan coloreadas o bien que al hacer doble click sobre ellas se editen con un JComboBox o cualquier otra ventana que se nos ocurra.

12 comentarios:

Anónimo dijo...

Esta explicación ¿sirve para datos extraidos de una base de datos oracle?
¿Cómo puedo hacer para extraer las lineas de la base de datos?
Gracias.

chuidiang dijo...

Hola:

Para extraer datos de una base de datos echa un ojo a lo basico de mysql en java. Tendras que cambiar el driver, puesto que el de oracle es ojdbc14.jar

Para meter datos de base de datos en un JTable, mira meter un resultset en un jtable

Se bueno.

Anónimo dijo...

Hola brother como puedo llenar el jtable con datos de mi SQL me podrias decir como hacerlo ya que esta herramienta es muy completa te lo agradeseria :)

chuidiang dijo...

Hola:

Aquí tienes un ejemplo de cómo meter un result set en un JTable.

Se bueno.

Julian dijo...

Estoy haciendo un programa p2p y me gustaria que los usuarios vieran el progreso de descarga y los datos de esta en Jtable con un JProgressBar, pero cuando hago lo el editor de celda, solo me muestra el valor del objeto en String.

Anónimo dijo...

Disculpa, el problea es tengo muchas columnas y no caben bien el nombre da cada una, lo que quieso saber es si se puede hacer que el titulo de la tabla ocupe dos lineas igualmente si se puede que las celdas tambien ocupen doble fila.

Anónimo dijo...

Disculpa, el problea es tengo muchas columnas y no caben bien el nombre da cada una, lo que quieso saber es si se puede hacer que el titulo de la tabla ocupe dos lineas igualmente si se puede que las celdas tambien ocupen doble fila.

KRISTIAN dijo...

HOLA A TODOS, ESTOY UTILIZANDO UNA JTABLE EN EL QUE REQUIERO ACTUALIZAR LOS VALORES MODIFICADOS POR EL USUARIO EN CADA UNA DE LAS CELDAS DE UNA SOLO COLUMNA. YA LOGRE QUE SOLO ESA COLUMNA SEA EDITABLE, Y YA LOGRE QUE LOS VALORES SEAN ACTUALIZADOS POR MEDIO DE UN BOTON. PERO LO QUE ME FALTA ES LO SIGUIENTE: ME GUSTARIA QUE EL DESPLAZAMIENTO POR MEDIO DEL TABULADOR SEA SOLO EN ESA COLUMNA, ES DECIR, QUE EL DESPLAZAMIENTO SEA VERTICAL Y NO HORIZONTAL Y SOLO SE PUEDA DESPLAZAR EN ESA COLUMNA, TAMBIEN QUE LAS CELDAS DE ESA COLUMNA SOLO PERMITAN VALORES FLOAT, SI NO QUE SE BLOQUEE LA CELDA HASTA QUE SE INGRESE UN VALOR FLOAT, Y POR ULTIMO QUE AL SELECCIONAR UNA CELDA SELECCIONE LO QUE ESTA ESCRITO Y SOBREESCRIBA EL NUEVO VALOR, YA QUE AL ESCRIBIRLO ME LO PONE ADELANTE DEL VIEJO VALOR Y NO LO SOBREESCRIBE.

ESPERO QUE ME PUEDAN AYUDAR, Y DE ANTEMANO MUCHISIMAS GRACIAS!!! Y DISCULPEN LAS MOLESTIAS!!

Anónimo dijo...

Ya tengo la conexión de mi base de datos es sencilla esta en access con el puente, quiero saber como hacer que aparezca las tablas en un jtable. Paso a paso.

Anónimo dijo...

ahh!!
Todo dentro de un frame.

MasterGcastro dijo...

Buenas chuidiang, gracias por tus tutoriales me has sido de gran ayuda para mi desarrollo en aplicaciones.

Tengo lo siguientes, ya pase los datos a una JTable y me visualiza todo bien, pero quiero ahora hacer actualizaciones directamente desde la JTable a la BD sobre los datos que se modifiquen.

Anónimo dijo...

Hola a todos

Quería añadir que se ha cambiado la direccrion del tutorial a:

http://www.chuidiang.com/java/tablas/tablamodelo/tablamodelo.php



http://www.chuidiang.com/java/tablas/tablamodelo/tablamodelo.php


Por cierto, Muchas gracias por el tuto