Está en la página 1de 16

Segn panama hitek:

Los jTable son elementos dinmicos y prcticos para el desarrollo de


algunos proyectos, por lo que hoy les muestro cmo agregar filas a un
jTable, entre otras cosas interesantes y muy tiles que debemos
saber.

Para algunos proyectos especficos es muy til contar con tablas en la


interfaz de nuestro programa. En dichos proyectos, agregar filas a un
jTable es necesario. Hoy les voy a mostrar cmo lograr algunas cosas
interesantes con nuestro jTable, fcil y sencillo.
Vamos a crear un proyecto en Netbeans, con una ventana, un jTable y
dos jButton, uno para agregar y el otro para eliminar filas.

Ahora debemos repasar un concepto clave de los jTable. Estos


controles utilizan algo llamado modelo. Se define como un
DefaultTableModel. Lo que se necesita hacer es declarar un objeto de
este tipo y asignarle el modelo que posee la jTable que tengamos en
nuestro programa.

Con este modelo declarado, se puede hacer lo que deseamos hacer,


sea agregar o eliminar filas a la tabla.
Para agregar una fila, se debe colocar lo siguiente:
modelo.addRow(new Object[]{,,,});
Entre las comillas se puede colocar los valores que queremos que
aparezca automticamente en las columnas de la Tabla.
Por ejemplo, en la programacin del botn Agregar Filas, se agrega lo
siguiente:

Al ejecutar el programa y presionar el botn de agregar filas, se


obtiene el siguiente resultado:

Hemos agregado filas a un jTable. Se han agregado luego de la cuarta


fila debido a que ya haba 4 filas en el jTable. Se pueden eliminar
dichas filas antes en el diseo del programa para que al agregar las
filas sea desde la primera. A propsito, las filas se enumeran a partir
del 0, as como las columnas. La primera casilla de la tabla se nombra
como la casilla 0,0, es decir, 0 fila y 0 columna.
Esto es importante a la hora de setear el botn de Eliminar fila, ya que
tenemos que establecer la fila que se desea eliminar. Normalmente es
la ltima fila, para lo cual utilizamos la siguiente instruccin:
modelo.removeRow(modelo.getRowCount()-1);
El mtodo getRowCount devuelve la cantidad de filas que hay en la
tabla. Al restarle 1, se le indica al programa que debe eliminar la
ltima de las filas.
Si se quiere eliminar todas las filas de una tabla, se debe utilizar un
ciclo for de la siguiente manera:

Es necesario que se declare la variable filas antes de entrar en el for


debido a que al ir eliminando las filas, el valor de getRowCount cambia
y no se mantiene estable, as que mejor lo declaramos antes para
entonces empezar a eliminar todo.

Segn codejavu:

Ejemplo JTable

Despus del break anterior sobre Eclipse y Netbeans, continuamos con la


secuencia de entradas sobre Java Swing, esta vez es el turno de los
componentes complejos, sin embargo cambiar la metodologa de las
entradas anteriores pues el tema lo amerita....
Se crear una entrada por cada componente complejo, con el fin de
exponer

rapidamente

mediante

ejemplos

su

funcionamiento.....iniciamos con JTable....

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.........

los JTable son aparentemente iguales, sin embargo la diferencia esta en


la forma como los llenamos...........el primero lo llenaremos usando
lgica

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.

Como se mencion el ejemplo es simple, tenemos


una seccin de registro y una seccin donde mostramos losJTable.
Por cuestiones de simplicidad no aplicaremos el MVC de lleno, sin
embargo seguimos usando los patrones DAO y VO para el manejo de la
informacin, el primero para comunicarnos con la BD y el segundo para
transportar nuestros datos.
En

la

clase

Conexion

tenemos

los

parmetros

requeridos

para

conectarnos a nuestra BD MySql, por ultimo usamos la clase Principal


para llamar a la VentanaRegistro donde presentamos la GUI y llenamos
las tablas que muestran la informacin.

Tabla Usuario Matriz de Datos.


Este JTable lo llenamos aplicando un poquito de lgica de programacin,
uno de los constructores de la clase JTable recibe 2 argumentos, el
primero es la matriz con los datos a mostrar, el segundo es un arreglo
con los nombres de las columnas, por esa razn lo que hacemos es
obtener los datos de la BD, almacenarlos en una lista y posteriormente
pasarlos

la

matriz,

as

como

inicializar

un

arreglo

con

los

encabezados para finalmente mandrselos al contructor.....


1public void mostrarDatosUsandoLogica() {
2 String titulos[] = { "Codigo", "Nombre", "Edad", "Profesin","Telefono" };
3 String informacin[][] = obtieneMariz();// obtenemos la informacion de la
4BD
5
6 mitabla1 = new JTable(informacin, titulos);
7 mitabla1.setEnabled(false);
8 mitabla1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
9

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

for (int x = 0; x < informacion.length; x++) {


informacion[x][0] = miLista.get(x).getIdPersona() + "";
informacion[x][1] = miLista.get(x).getNombrePersona() + "";
informacion[x][2] = miLista.get(x).getProfesionPersona() + "";
informacion[x][3] = miLista.get(x).getEdadPersona() + "";
informacion[x][4] = miLista.get(x).getTelefonoPersona() + "";
}
return informacion;
}

Tabla

Usando

Table

Model

Este JTable a nivel visual es igual que el anterior, sin embargo la


diferencia radica en la forma de obtener los datos, aqui usamos un
constructor sin argumentos y un objeto de tipo DefaultTableModel el
cual nos permite definir la forma como llenamos la tabla, tanto en el
caso de los encabezados como en la informacin....... de esta manera el
llenado de los datos se realiza directamente por medio del objeto model
que se envia como parametro al metodo que consulta la BD....
1private void mostrarDatosConTableModel() {
2 DefaultTableModel model;
3 model = new DefaultTableModel();// definimos el objeto tableModel
4 miTabla2 = new JTable();// creamos la instancia de la tabla
5 miTabla2.setModel(model);
6 model.addColumn("N Documento");
7 model.addColumn("Nombre");
8 model.addColumn("Edad");
9

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.....

Y Listo!!!! Con eso terminamos el ejemplo, los invito a descargarlo y


validar su funcionamiento...........espero que les pueda servir!!!!

Segn programacion en java:

Manejo del Componente JTable

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.

Diseo del formulario


Nuestro formulario debera quedar similar a lo siguiente.

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.

Insercin de datos a la Tabla


Cdigo

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]);

miJTable.setValueAt(txtInputNombre.getText(), nroFilas, 0);


miJTable.setValueAt(txtInputApellidoP.getText(), nroFilas, 1);
miJTable.setValueAt(txtInputApellidoM.getText(), nroFilas, 2);
miJTable.setValueAt(txtInputDNI.getText(), nroFilas, 3);

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.

Segunda forma de agregar datos al JTable


Para probar esta forma simplemente borramos o comentamos las lneas de cdigo agregado anteriormente
en el evento actionPerformed del botn y luego insertamos este cdigo.

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.

Leer datos de la fila de un JTable


En este caso tambin hay muchas formas de hacer lectura de los datos de un JTable, pero ahora slo
haremos

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.

También podría gustarte