P. 1
Representación de Tablas en un JTable

Representación de Tablas en un JTable

|Views: 1.375|Likes:

More info:

Published by: Hector Manuel Gutierrez Serrano on Aug 12, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

06/18/2013

pdf

text

original

Representación de Tablas en un JTable En la hoja guiada anterior vimos que existe un tipo de objeto llamado JTable que nos

permite introducir tablas en nuestras aplicaciones. Estos objetos son ideales para mostrar el contenido de una tabla de la base de datos o del resultado de una consulta. Recuerda que para extraer datos de la base de datos realizamos una consulta SQL de tipo SELECT cuyo resultado se almacena en un objeto ResultSet . Un ResultSet básicamente es una tabla almacenada en memoria (y por tanto no visible) Sin embargo, en esta hoja guiada veremos como trasladar el contenido de un ResultSet a un JTable para que el usuario pueda visualizar los datos de forma cómoda. El proceso será básicamente el siguiente:
Base de Datos

ResultSet

JTable

EJERCICIO GUIADO Nº 1

1. Crear un proyecto java y prepararlo para que pueda acceder a la base de datos MANEMPSA.MDB: a. Crear una subcarpeta Base y copiar dentro de ella el fichero de base de datos MANEMPSA.MDB b. Declarar los dos objetos globales: conexión y sentencia . c. Programar el método PrepararBaseDatos de forma que el programa acceda a la base de datos y se construyan los objetos conexión y sentencia . d. Programar el evento windowClosing de la ventana principal d e forma que se cierre la conexión.

2. Una vez hecho esto, añade a la ventana principal un objeto JTable y llámalo simplemente tabla . 3. Añade en la parte inferior un botón llamado btnTrabajadores . La ventana principal quedará así:

4. Agregaremos al proyecto un objeto ³modelo de tabla´ ( DefaultTableModel ) llamado m que sea global. También añadiremos en el constructor una llamada a un método PrepararTabla y programaremos dicho método de la siguiente forma:

Luego se crea el modelo de tabla a partir de este vector vacío. C. Ejecuta el programa para ver su aspecto de momento. Y se asigna finalmente a la tabla. . B. El resultado de esto e s que la tabla aparecerá vacía y sin títulos (En realidad. como títulos aparecen letras: A.Si observas el código. etc) 5. verás que en el método PrepararTabla se crea un vector de cadenas con cuatro elementos pero que no contiene nada.

Programe lo siguiente: Estudiemos el código detenidamente. ResultSet r = sentencia.exe cuteQuery("select * from trabajadores"). . ejecutando una consulta SQL usando el objeto sentencia . 6. Bien. El resultado de dicha consulta se almacenará en un objeto ResultSet llamado r. Lo primero que se hace es extraer el contenido de la tabla Trabajadores de la base de datos. las columnas tienen como título letras. ahora programaremos el botón btnTrabajadores de forma que al pulsarlo se muestre el contenido de la tabla Trabajadores.Debido a que hemos asignado un vector de títulos sin contenido.

"Matrícula"}. Ahora ya solo nos queda recoger todo el contenido del ResultSet y mostrarlo en la tabla. lo que hacemos es definir un vector de cadenas con los títulos correspondientes a los campos de la tabla.A continuación. Observa el código."Sueldo". se extraerá información del ResultSet y se introducirá en la tabla."Apellidos".setModel(m). Lo primero que se hace es crear el modelo de la tabla definiendo la cabecera. y luego usam os este vector para crear el modelo de la tabla. m=new DefaultTableModel(null. Finalmente asignamos el modelo creado a la tabla."Fecha"."Nombre". Para ello. Observe como al pulsar el botón Trabajadores la cabecera de la tabla pasa a contener los campos indicados en el vector títulos. 8. 7. Como ves. tabla.titulos). Stringtitulos[] = {"DNI". Ejecute el programa de momento. modifique el código del actionPerformed del botón Trabajadores para que quede como sigue: .

Todo este proceso se rodea con un try.Si estudiamos el código. veremos que se extrae la tabla trabajadores entera introduciéndola en un ResultSet llamado r. y empezamos a recorrer el ResultSet usando el típico: while (r. a la tabla.next()) { En cada vuelta del bucle tomamos los valores de la fila del ResultSet y los almacenamos en el vector (en la posición correspondiente) Luego se añade el vector que se ha construido al modelo de la tabla. Es decir. Así pues. creamos un vector de seis elementos. correspondiente a los seis datos que contiene cada fila.catch para evitar errores inesperados.. en cada vuelta se añadirá un registro más al m odelo m. con lo que esta visualizará los datos del modelo. Cuando el bucle ha terminado. que se corresponde a los campos de la tabla trabajadores. es decir. Luego construimos un modelo de tabla ( DefaultTableModel ) llamado m usando un vector de títulos. a través de una instrucción SELECT de SQL. ya que este fue el resultado de la consulta SQL ejecutada. el modelo de la tabla contiene exactamente lo mismo que el ResultSet. Una vez hecho esto. . Estos registros son extraídos del ResultSet . Ya solo tenemos que asignar el modelo de la tabla al JTable correspondiente. contiene la tabla trabajadores ..

(Esto se hace recorriendo el ResultSet y almacenando cada registro en un vector) Almacenamiento del vector en el modelo de tabla. Como ve. el objeto tabla muestra entonces el contenido de la tabla Trabajadores . (Al hacer esto el objeto JTable muestra el contenido del modelo) - - - 10. (Cada vector extraido del ResultSet se inserta como fila e n el modelo de tabla) Se asigna el modelo de tabla al objeto JTable. Mejore estos detalles haciendo los s iguientes cambios en el botón Trabajadores : . Ejecute el programa y observe el resultado al pulsar el botón Trabajadores . (Esto se hace ejecutando una consulta SQL de tipo SELECT a través del objeto sentencia ) Del ResultSet extraemos los datos a un modelo de tabla. 11. Para entender el código anterior aquí tienes un pequeño gráfico explicativo: Base de Datos ResultSet Vector Modelo de Tabla JTable - De la base de datos extraemos datos a un ResultSet .9. Si observa la tabla verá que la fecha aparece en el formato estándar de almacenamiento: Año-mes-diahora:min:seg Y que los sueldos aparecen con punto decimal.

Ejecuta ahora el programa y observa como se muestran las fechas y los sueldos: . mes y d ía y se concatenan en un formato más habitual: dia/mes/año.Como se puede observar. Y en el caso de la fecha. 12. se extrae de la cadena el año. antes de almacenar los sueldos en el modelo de la tabla se reemplazan el punto decimal por una coma.

.

Copia en él el código del actionPerformed del botón btnTrabajadores : . Para ello. Abrir la aplicación 2. realice los siguientes cambios en el código del programa: Añade una llamada a un método MostrarTrabajadores. si eliminamos un registro sería interesante que automáticamente viéramos la tabla actualizada en el JTable. Se puede aprovechar esta idea de forma que todas las operaciones que realicemos sobre una tabla se vean inmediatamente refleja das en el JTable de la aplicación java. Por ejemplo. en el constructor del programa. El primer objetivo será hacer que al ejecutar el programa aparezca automáticamente el contenido de la tabla Trabajadores en el JTable. Crea el método MostrarTrabajadores : 4. 1. En esta hoja guiada se mejorará la aplicación de la hoja guiada anterior. 3. dotándola de opciones para la gestión de la tabla Trabajadores .En la hoja guiada anterior se vio como mostrar el contenido de una tabla de la base de datos en un JTable de la aplicación java.

5. Puesto que la tabla trabajadores se muestra al empezar el programa. Ejecuta el programa y comprueba el resultado. 6. la existencia del botón Trabajadores no tiene sentido. así pues elimina el botón Trabajadores de la ventana. Añade ahora en la parte inferior un panel llamado panelAcciones y un botón Eliminar Trabajador llamado btnEliminar : . 7. Lo que produce esta modificación del código es que al ejecutarse el programa se ejecute el método MostrarTrabajadores con lo que se ejecutará el código que hicimos en la hoja anterior para mostrar los datos de la tabla trabajadores en el JTable.

Se pretende que el usuario seleccione uno de los trabajadores de la tabla y al pulsar el botón Eliminar dicho trabajador se elimine de la base de datos. Esto es lo que se hace con el JOptionPane. Si se seleccionó a un trabajador. Pero antes. Observa el proceso: Extraemos del modelo del JTable el dni del trabajador seleccionado (este dni se encuentra en la fila seleccionada ±filsel. . Para ello. Esta eliminación por supuesto se verá reflejada en el JTable. Si el usuario acepta la eliminación del trabajador.0). Lo primero que s e hace es recoger la fila seleccionada de la tabla usando el método getSelectedRow .getValueAt(filsel. El programa avisa de esta circunstancia.getModel(). entonces podemos bo rrar.columna 0 ±la primera columna -): m = (DefaultTableModel) tabla.showConfirmDialog. es interesante pedir confirmación.8. programe en el botón Eliminar lo siguiente: Estudiemos con detenimiento el código programado. dni = (String) m. Si el valor devuelto es ±1 entonces es que no hay ninguna fila seleccionada. entonces la llevamos a cabo.

Cuando se pulse el botón Nuevo se pretende que aparezca un formulario donde se puedan introducir los datos de un nuevo trabajador. Este diálogo se llamará dialogoNuevo . - 9. Esto actualizará el JTable. Ahora añade otro botón llamado btnNuevo: 11. 10. - Y finalmente se llama al procedimiento MostrarTabla para que se extraiga de la base de datos y muestre de nuevo la tabla trabajadores . agrega un JDialog al proyecto. . Esto se conseguirá añadiendo un cuadro de diálogo a nuestro proyecto..catch para capturar errores inesperados. Observa como el JTable se actualiza cuando se produce la eliminación. Para ello. y se podrá ver que el trabajador ha sido eliminado. Esto se hace concatenando y ejecutando la instrucción SQL a través del objeto sentencia : sentencia. Todo esto está dentro de un try. Ejecuta el programa y prueba a eliminar algún trabajador.executeUpdate("deletefrom trabajado res wheredni='"+dni+"'")..- Ahora se construirá una instrucción de acción SQL del tipo DELETE para que se elimine el trabajador con el dni extraído.

12. Y finalmente se actualiza el JTable por si se hubiera introducido un nuevo trabajador. . entre en el actionPerformed del botón btnNuevo y programe lo siguiente: Este código empieza asignando un tamaño al cuadro de diálogo dialogoNuevo . se define el dialogoNuevo como Modal. La idea es la siguiente. Haga doble clic en el Inspector sobre el dialogoNuevo para diseñarlo. El usuario introducirá los datos del nuevo trabajador y pulsará Aceptar. entonces no se hará nada. Si el usuario pulsa Cancelar. y entonces estos datos se introducirán en la tabla trabajadores . Luego se muestra dicho cuadro de diálogo. Esto significa que hasta que no se termine de trabajar con este cuadro de diálogo no se podrá continuar usando el programa principal. El JTable se actualizará para mostrar el resultado de la inser ción del nuevo trabajador. Así pues. Debe quedar como sigue. Cuando el usuario pulse el botón Nuevo. aparecerá este cuadro de diálogo. con los nombres que se indican a continuación: txtNuevoDni txtNuevoNombre txtNuevoApellidos txtNuevoSueldo txtNuevoDiatxtNuevoMestxtNuevoAnio txtNuevoMatricula btnNuevoAceptar btnNuevoCancelar 13. Luego.

se construye por concatenación una instrucción SQL de tipo INSERT que permita introducir los datos del nuevo trabajador en la tabla trabajadores. Ahora programemos los botones del cuadro de diálogo dialogoNuevo . Programa dentro de este botón lo siguiente: Vamos a analizar detenidamente este código. Y finalmente se programará el botón Aceptar del cuadro de diálogo. Lo primero que puedes observar es un conjunto de líneas que copian el contenido de los cuadros de texto en variables de cadena. Al hacer esto.14. Recuerda que este botón es el que introduce en la base de datos a un nuevo trabajador. Empecemos por el botón Cancelar : Como ves. con estas variables. cambiamos la coma decimal por punto decimal en el caso del sueldo y configuramos la fecha en el formato que entiende SQL: mes/dia/año. tan sencillo como descargar el cuadro de diálogo. Luego. El botón Cancelar debe limitarse a quitar de la pantalla el cuadro de diálogo dialogoNuevo . . 15.

Al pulsar este botón debe aparecer un cuadro de diálogo donde el usuario pueda cambiar fácilmente los datos. Para ello añade un nuevo botón a la ventana. Por supuesto. Nuestro programa ya puede hacer altas y bajas.catch para evitar problemas inesperados. así que básicamente solo tendrás que ha cer una copia de dicho cuadro de diálogo y modificarlo un poco. 17. Haz clic con el derecho sobre el cuadro de diálogo dialogoNuevo y activa Copiar : .. Ese cuadro de diálogo será muy parecido al que hemos hecho antes. 19.Se ejecuta dicha instrucción SQL.. Se pretende que el usuario seleccione en la tabla el trabajador cuyos datos quiere modificar. Y se cierra el cuadro de diálogo. Solo queda que pueda realizar modificaciones. llamado btnModificar : 18. A continuación se explica como hacerlo. y luego pulse est e botón para efectuar la modificación. es necesario un try. 16. Ejecuta el programa y prueba a introducir nuevos trabajadores.

Sin embargo. Cámbiale el nombre: 23. le cambiaremos el nombre para que sea más acorde con su función. 22. Este cuadro tendrá como nombre dialogoNuevo1 .20. Haz doble clic sobre él y realiza las siguientes modificaciones en el diseño: . Aparecerá un nuevo cuadro de diálogo que es una copia del anterior. Luego activa Pegar sobre Otros Componentes : 21. Le llamaremos dialogoModificar . Vamos a modificar un poco el diseño del dialogoModificar .

Cambia el título. Entra en el actionPerformed del botón Modificar y programa lo siguiente: . Ahora es ³Modificar Trabajador´ Los nombres para los cuadros de texto y botones serán: txtModDni (Desactiva su propiedad editable) txtModNombre txtModApellidos txtModSueldo txtModDiatxtModMestxtModAnio txtModMatricula btnModAceptarbtnModCancelar 24. Empezaremos programando el botón Modificar . Se supone que el usuario ha seleccionado a este trabajador en la tabla anteriormente. Al pulsar este botón se debe mostrar el cuadro de diálogo anterior relleno con los datos del trabajador que se quiere modificar.

. Prueba a seleccionar una fila de la tabla y al pulsar el botón Modificar. se extraen los datos del modelo del JTable y se almacenan en varias variables de cadena. Primero se comprueba el número de la fila seleccionada. ya que es necesario modificar la fila del trabajador que se quiere modificar. Si no hubiera ninguna se muestra un mensaje de error.Estudiemos el código. Una vez realizada la modificación (no programada aún) se muestran los trabajadores en la tabla llamando al método MostrarTrabajadores . Y finalmente se prepara el cuadro de diálogo dialogoModificar y se muestra en la pantalla. En el caso de que haya una fila seleccionada. esas mismas variables se almace nan en los cuadros de texto del cuadro de diálogo dialogoModificar . Una vez hecho esto. 25. Puedes comprobar el funcionamiento del programa de momento.

Selecciona... . Y luego pulsa modificar.

ya que entonces estaríamos modificando los datos de otro trabajador. Si se pulsa Cancelar no sucede nada. . 26.El resultado es que aparece el cuadro de diálogo dialogoModificar ya relleno con los datos del trabajador que se seleccionó. El usuario realizará los cambios e n los cuadros de textos ya rellenos y luego pulsará el botón Aceptar para que se produzca la modificación. introduciendo todos los datos de los cuadros de texto en la tabla trabajadores. Se empezará programando el botón Cancelar . Lo bueno que tiene el rellenar el cuadro de diálogo dialogoModificar con los datos del trabajador que se quiere modificar es que no tenemos que escribir todos los datos. Es importante que este DNI no cambie. 27. y solo modificar el campo que nos interese. Ahora nos centraremos en el botón Aceptar. El código siguiente tomará como referencia el DNI del trabajador que se está modificando. Simplemente se cerrará el cuadro de diálogo. Este botón debe limit arse a cerrar el cuadro de diálogo dialogoModificar : 28. Este botón debe realizar la modificación.

con estas variables. Observa como el JTable se actualiza con las nuevas modif icaciones realizadas.. Luego. Todo este código es sus ceptible de sufrir fallos por lo que está rodeado de un try. Prueba a realizar varias actualizaciones. para evitar que el usuario pueda cambiarlo accidentalente.catch.. . Finalmente se cierra el cuadro de diálogo. se construye una instrucción SQL del tipo UPDATE que permite modificar los datos del trabajador con el dni indicado en el cuadro de diálogo. 29.Esta es la razón por la que el cuadro de texto txtModDni se ha configurado como no editable . Ejecuta el programa y comprueba el funcionamiento de la actualización de trabajadores. Lo primero que se hace es recoger en variables los datos introducidos en los cuadros de texto. Programa el siguiente código en el botón Aceptar: Estudiemos el código.

Para la inserción de nuevos registros en la tabla se recomienda la creación de un cuadro de diálogo que muestre un formulario donde el usuario pueda introducir los datos del nuevo registro cómodamente. El JTable nos permite visualizar los datos de la tabla y seleccionar rápidamente el registro que queramos manipular. Para la modificación de un registro.CONCLUSIÓN La más simple de las aplicaciones de base de datos debe ser capaz de realizar las siguientes operaciones sobre una tabla: Altas Bajas Modificaciones Es muy interesante que la aplicación muestre en pantalla continuamente un JTable con el contenido de la tabla de la base de datos sobre la que se está trabajando. . se recomienda la creación de otro cuadro de diálogo que muestre los datos del registro que se quiere modificar.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->