Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Segn codejavu:
Ejemplo JTable
rapidamente
mediante
ejemplos
su
Que es?
Un Jtable representa una tabla de datos con sus respectivas Filas y
Columnas, la informacin que se muestra en ella puede ser ingresada
tanto por nosotros como obtenida de una base de datos...
El Ejemplo.
Para el ejemplo presentaremos una ventana de registro de usuarios
donde a medida que se diligencia el formulario, se almacenan los datos
en la BD, desde all se obtendr la informacin y se mostrarn los datos
en 2 JTable.........
de
programacin,
el
segundo
lo
llenaremos
con
un
componente DefaultTableModel.........
Este ejemplo es basado en la aplicacin realizada sobre el Patrn Modelo
Vista Controlador (El Script de la BD lo encuentran en esa entrada), por
lo tanto usaremos parte de la lgica desarrollada.......para esta solo
dejaremos la vista de registro, agregandole los JTable con las que
vamos a trabajar....
La Aplicacin.
la
clase
Conexion
tenemos
los
parmetros
requeridos
para
la
matriz,
as
como
inicializar
un
arreglo
con
los
mibarra1.setViewportView(mitabla1);
}
10
11private String[][] obtieneMariz() {
12 PersonaDao miPersonaDao = new PersonaDao();
13 /**
14 * llamamos al metodo que retorna la info de la BD y la almacena en la
15 * lista
16 */
17 ArrayList< PersonaVo > miLista =
18miPersonaDao.buscarUsuariosConMatriz();
19 /**
20 * como sabemos que son 5 campos, definimos ese valor por defecto para
21
* las columnas las filas dependen de los registros retornados
22
*/
23
String
informacion[][] = new String[miLista.size()][5];
24
25
26
27
28
29
30
31
32
Tabla
Usando
Table
Model
model.addColumn("Profesin");
10 model.addColumn("Telefono");
11
12 miTabla2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
13 miTabla2.getTableHeader().setReorderingAllowed(false);
14
15 PersonaDao miPersonaDao2 = new PersonaDao();
16
/**
17
* enviamos el objeto TableModel, como mandamos el objeto podemos
18
* manipularlo desde el metodo
19
20 */
21 miPersonaDao2.buscarUsuariosConTableModel(model);
22 miBarra2.setViewportView(miTabla2);
}
Con esta tabla vemos que podemos utilizar otros elementos compatibles
con el componente JTable que nos pueden ahorrar muchas lineas de
cdigo, en este caso comparandolo con el anterior nos ahorra un mtodo
con
un
proceso
de
mas
para
obtener
el
mismo
resultado.....
El tema que veremos en este momento es algo que tiene mucha importancia cuando necesitemos visualizar
una serie de registros los cuales normalmente se pueden encontrar en forma de lista o tablas. Un ejemplo
podra ser cuando queramos extraer datos de una base de datos, algn archivo xls o xml claro que estos
temas lo veremos en un futuro, pero lo que haremos ahora es manejar la forma de insertar nuevos registros
en un "JTable" el cual es un componente en Java o tambin poder leerlos.
Veamos.
Ahora para poder trabajar limpiamente con nuestro JTable y los componentes deben darle los nombres
necesarios a cada componente y en este caso quitaremos todas las filas que se creo por defecto en nuestro
JTable. Para dicho caso seleccionamos en JTable y luego vamos a nuestro panel de propiedades y
accedemos a model.
Una vez dentro cambiamos el valor de Rows a 0 como se ve en la imagen. Ahora el formulario debera
verse de la siguiente forma.
Ahora que ya tenemos este formulario empezaremos con lo necesario para dar la funcionalidad.
del
botn
"Agregar
la
Tabla"
en
el
actionPerformed
Las formas en que se puede agregar datos a un JTable pueden ser variados, en este momento veremos dos
formas.
Primera
forma
de
agregar
datos
al
JTable
La primera forma que veremos es mediante los ndices de la tabla mandando directamente cada texto a
cierta celda.
DefaultTableModel modeloDeMiTabla=(DefaultTableModel)miJTable.getModel();
modeloDeMiTabla.addRow(new Object[nroFilas]);
nroFilas++;
Como se puede ver la primera lnea es donde hacemos una lectura del modelo de la tabla haciendo un
casting al mismo. En la segunda lnea agregamos una fila a la tabla donde nroFilas es una variable global
de la clase que empieza en "0" y por cada vez que se ejecuta el evento el contador incrementa en "1". En
las dems filas podemos ver que se asigna los valores a la tabla siendo el primer parmetro del mtodo
setValueAt el texto que ir dentro de la tabla, el segundo parmetro es la fila a la cual se agregar el texto y
el tercer parmetro es la columna a la que se asigan.
Hasta este punto ya debera ser posible agregar datos a la tabla, y nuestro formulario se vera de la
siguiente forma.
Object[] datosDeLaFila=
{
txtInputNombre.getText(),
txtInputApellidoP.getText(),
txtInputApellidoM.getText(),
txtInputDNI.getText()
};
DefaultTableModel modeloDeLaTabla=(DefaultTableModel)miJTable.getModel();
modeloDeLaTabla.addRow(datosDeLaFila);
miJTable.setModel(modeloDeLaTabla);
Como se puede ver en este ltimo caso agregamos la fila mandando un tipo object[] al modelo de la tabla y
luego se le reasigna el nuevo modelo a ste.
Es cierto que existe otras formas de agregar filas a un JTable, pero posiblemente estas dos formas sean las
ms usadas.
Si tuviramos una lista de objetos, slo hara falta recorrer la lista o el ArrayList y asignar item por item al
JTable.
una
ya
que
posiblemente
sea
de
las
ms
tiles.
Para dicho caso haremos que se lea los datos de la fila seleccionada en el JTable y los mande a los campos
de la parte inferior del formulario, por lo tanto ingresemos el siguiente cdigo en el botn "Leer Fila
Seleccionada".
if(miJTable.getSelectedRow()>=0)
{
String[] datosLeidos=
{
String.valueOf(miJTable.getValueAt(miJTable.getSelectedRow(), 0)),
String.valueOf(miJTable.getValueAt(miJTable.getSelectedRow(), 1)),
String.valueOf(miJTable.getValueAt(miJTable.getSelectedRow(), 2)),
String.valueOf(miJTable.getValueAt(miJTable.getSelectedRow(), 3))
};
txtReadNombre.setText(datosLeidos[0]);
txtReadApellidoP.setText(datosLeidos[1]);
txtReadApellidoM.setText(datosLeidos[2]);
txtReadDNI.setText(datosLeidos[3]);
}
else
{
JOptionPane.showMessageDialog(this, "Debe seleccionar un registro");
Como se puede ver en la condicin slo hacemos esa comparacin para saber si se encuentra
seleccionado alguna fila en la tabla. Luego creamos un array de String y le asignamos los datos de la fila
seleccionada y por ltimo lo mandamos a los campos de la parte inferior del formulario.