miércoles, 14 de septiembre de 2016

052.- La Clase JTable - Continuación - Java Y NetBeans

Gestión de una tabla:

En el post anterior se vio como mostrar el contenido de una tabla de la base de datos en un JTable de la aplicación java.
Se puede aprovechar esta idea de forma que todas las operaciones que realicemos sobre una tabla se vean inmediatamente reflejadas en el JTable de la aplicación java.
Por ejemplo, si eliminamos un registro sería interesante que automáticamente viéramos la tabla actualizada en el JTable.
En esta publicación se mejorará la aplicación de la publicación anterior, dotándola de opciones para la gestión de la tabla Trabajadores.



EJERCICIO GUIADO Nº 1

  1. Abrir la aplicación de la publicación anterior.

  1. El primer objetivo será hacer que al ejecutar el programa aparezca automáticamente el contenido de la tabla Trabajadores  en el JTable. Para ello, realice los siguientes cambios en el código del programa:



  1. Crea el método mostrarTodosLosTrabajadores:



  1. Copia en el método anterior el código del evento actionPerformed del botón btnVerTrabajadores:



  1. Lo que produce esta modificación del código es que al ejecutarse el programa se ejecute el método mostrarTodosLosTrabajadores con lo que se ejecutará el código que hicimos en la publicación anterior para mostrar los datos de la tabla Trabajadores en el JTable.

Ejecuta el programa y comprueba el resultado.


  1. Puesto que la tabla Trabajadores se muestra al empezar el programa, la existencia del botón Ver Trabajadores no tiene sentido, así pues elimina el botón Ver Trabajadores de la ventana.


  1. Añade ahora en la parte inferior un panel llamado panelAcciones y un botón Eliminar Trabajador llamado btnEliminarTrabajador:



  1. Se pretende que el usuario seleccione uno de los trabajadores de la tabla y al pulsar el botón Eliminar Trabajador se elimine de la base de datos. Esta eliminación por supuesto se verá reflejada en el JTable.

Para ello, programe en el botón Eliminar Trabajador lo siguiente:


Analicemos con detenimiento el código programado:

Lo primero que se hace es recoger la fila seleccionada de la tabla usando el método getSelectedRow. Si el valor devuelto es –1 entonces es que no hay ninguna fila seleccionada. El programa avisa de esta circunstancia.

Si se seleccionó a un trabajador, entonces podemos borrarlo. Pero antes, es interesante pedir confirmación. Esto es lo que se hace con el JOptionPane.showConfirmDialog.

Si el usuario acepta la eliminación del trabajador, entonces la llevamos a cabo. Observa el proceso:

-       Extraemos del modelo del JTable el dni del trabajador seleccionado, este dni se encuentra en la fila seleccionada (filaSel) y en la primera columna (columna 0):

detamo = (DefaultTableModel) tablaTrabajadores.getModel();
dni = (String) detamo.getValueAt(filaSel, 0);

-       Ahora se construirá una instrucción de acción SQL del tipo DELETE para que se elimine el trabajador con el dni extraído. Esto se hace concatenando y ejecutando la instrucción SQL a través del objeto sentencia:

sentencia.executeUpdate("DELETE FROM Trabajadores WHERE dni = '" + dni + "'");

-       Y finalmente se llama al procedimiento mostrarTodosLosTrabajadores para que se extraiga de la base de datos y muestre de nuevo la tabla Trabajadores. Esto actualizará el JTable, y se podrá ver que el trabajador ha sido eliminado.

-       Todo esto está dentro de un try...catch para capturar errores inesperados.


  1. Ejecuta el programa y prueba a eliminar algún trabajador. Observa como el JTable se actualiza cuando se produce la eliminación.


  1. Ahora añade otro botón llamado btnNuevoTrabajador:



  1. Cuando se pulse el botón Nuevo Trabajador se pretende que aparezca un formulario donde se puedan introducir los datos de un nuevo trabajador. Esto se conseguirá añadiendo un cuadro de diálogo a nuestro proyecto. Para ello, agrega un JDialog al proyecto. Este diálogo se llamará dialogoNuevoTrabajador.





  1. Haga doble clic en el Inspector sobre el dialogoNuevoTrabajador para diseñarlo. Debe quedar como sigue, con los nombres que se indican a continuación:



  1. La idea es la siguiente. Cuando el usuario pulse el botón Nuevo Trabajador de la Ventana Principal aparecerá este cuadro de diálogo. El usuario introducirá los datos del nuevo trabajador y pulsará Aceptar, y entonces estos datos se introducirán en la tabla Trabajadores.

Si el usuario pulsa Cancelar, entonces no se hará nada.

El JTable se actualizará para mostrar el resultado de la inserción del nuevo trabajador.

Así pues, entre en el evento actionPerformed del botón btnNuevoTrabajador y programe lo siguiente:



Este código empieza asignando un tamaño al cuadro de diálogo dialogoNuevoTrabajador.

Luego, se define al dialogoNuevoTrabajador como Modal. Esto significa que hasta que no se termine de trabajar con este cuadro de diálogo no se podrá continuar usando el programa principal.

Luego se muestra dicho cuadro de diálogo.

Y finalmente se actualiza el JTable por si se hubiera introducido un nuevo trabajador.


  1. Ahora programaremos los botones del cuadro de diálogo dialogoNuevoTrabajador. Empecemos por el botón Cancelar:



Como ves, sólo se descarga el cuadro de diálogo. El botón Cancelar se limita a quitar de la pantalla el cuadro de diálogo dialogoNuevoTrabajador.


  1. Y finalmente se programará el botón Aceptar del cuadro de diálogo. Recuerda que este botón es el que introduce en la base de datos a un nuevo trabajador. Programa dentro de este botón lo siguiente:



Vamos a analizar detenidamente este código:

Lo primero que puedes observar es un conjunto de líneas que copian el contenido de los cuadros de texto en variables de cadena. Configuramos la fecha en el formato que entiende SQL: día/mes/año.

Luego, con estas variables, se construye por concatenación una instrucción SQL de tipo INSERT que permita introducir los datos del nuevo trabajador en la tabla Trabajadores.

Se ejecuta dicha instrucción SQL. Y se cierra el cuadro de diálogo.

Por supuesto, es necesario un try...catch para evitar problemas inesperados.


  1. Ejecuta el programa y prueba a introducir nuevos trabajadores.


  1. Nuestro programa ya puede hacer altas y bajas. Solo queda que pueda realizar modificaciones. Para ello añade un nuevo botón a la ventana, llamado btnModificarTrabajador:



  1. Se pretende que el usuario seleccione en la tabla el trabajador cuyos datos quiere modificar, y luego pulse este botón para efectuar la modificación.

Al pulsar este botón debe aparecer un cuadro de diálogo donde el usuario pueda cambiar fácilmente los datos.

Ese cuadro de diálogo será muy parecido al que hemos hecho antes, así que básicamente solo tendrás que hacer una copia de dicho cuadro de diálogo y modificarlo un poco. A continuación se explica como hacerlo.


  1. Haz clic derecho sobre el cuadro de diálogo dialogoNuevoTrabajador y activa Copiar :



  1. Luego activa Pegar sobre Otros Componentes:



  1. Aparecerá un nuevo cuadro de diálogo que es una copia del anterior. Este cuadro tendrá como nombre dialogoNuevoTrabajador1.



  1. Sin embargo, le cambiaremos el nombre para que sea más acorde con su función. Le llamaremos dialogoModificarTrabajador. Cámbiale el nombre:



  1. Vamos a modificar un poco el diseño del dialogoModificarTrabajador. Haz doble clic sobre él y empieza cambiando el título, ahora es “Modificar Trabajador:” luego cambia los nombres de los cuadros de texto y de los botones como se indica:



  1. Empezaremos programando el botón Modificar Trabajador. Al pulsar este botón se debe mostrar el cuadro de diálogo anterior relleno con los datos del trabajador que se quiere modificar. Se supone que el usuario ha seleccionado a este trabajador en la tabla anterior.

Entra en el evento actionPerformed del botón Modificar Trabajador y programa lo siguiente:



Estudiemos el código:

Primero se comprueba el número de la fila seleccionada. Si no hubiera ninguna se muestra un mensaje de error, ya que es necesario seleccionar la fila del trabajador que se quiere modificar.

En el caso de que haya una fila seleccionada, se extraen los datos del modelo del JTable y se almacenan en varias variables de cadena.

Una vez hecho esto, esas mismas variables se asignan los cuadros de texto del cuadro de diálogo dialogoModificarTrabajador.

Y finalmente se prepara el cuadro de diálogo dialogoModificarTrabajador y se muestra en la pantalla. Una vez realizada la modificación (no programada aún) se muestran los trabajadores en la tabla llamando al método mostrarTodosLosTrabajadores.


  1. Puedes comprobar el funcionamiento del programa. Prueba a seleccionar una fila de la tabla y a pulsar el botón Modificar Trabajador.





  1. Lo bueno que tiene el rellenar el cuadro de diálogo dialogoModificarTrabajador con los datos del trabajador que se quiere modificar es que no tenemos que escribir todos los datos, y solo modificar el campo que nos interese.

El usuario realizará los cambios en los cuadros de texto ya rellenos y luego pulsará el botón Aceptar para que se produzca la modificación.

Si se pulsa Cancelar no sucede nada. Simplemente se cerrará el cuadro de diálogo.


  1. Se empezará programando el botón Cancelar. Este botón debe limitarse a cerrar el cuadro de diálogo dialogoModificarTrabajador:



  1. Ahora nos centraremos en el botón Aceptar. Este botón debe realizar la modificación, introduciendo todos los datos de los cuadros de texto en la tabla trabajadores.

El código siguiente tomará como referencia el DNI del trabajador que se está modificando. Es importante que este DNI no cambie, ya que entonces estaríamos modificando los datos de otro trabajador.

Esta es la razón por la que el cuadro de texto txtModifDni se ha configurado como no editable, para evitar que el usuario pueda cambiarlo accidentalmente.

Programa el siguiente código en el botón Aceptar:



Estudiemos el código:

Lo primero que se hace es recoger en variables los datos introducidos en los cuadros de texto.

Luego, con estas variables, 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.

Finalmente se cierra el cuadro de diálogo.

Todo este código es susceptible de sufrir fallos, para evitar esto se le rodea de un try...catch.


  1. Ejecuta el programa y comprueba el funcionamiento de la actualización de trabajadores. Prueba a realizar varias actualizaciones. Observa como el JTable se actualiza con las nuevas modificaciones realizadas.





CONCLUSIONES:

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.

El JTable nos permite visualizar los datos de la tabla y seleccionar rápidamente el registro que queramos manipular.

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.

Para la modificación de un registro, se recomienda la creación de otro cuadro de diálogo que muestre los datos del registro que se quiere modificar.

No hay comentarios.:

Publicar un comentario