Contenido del curso
CRUD
- 7

Creación de Proyectos Java con Maven y Gestión de Dependencias
05:23 min - 8

Try-with-resources para cerrar conexiones JDBC
07:05 min - 9

Patrón DAO vs Repository en Java
03:12 min - 10

Patrón Repository con Singleton en Java
11:18 min - 11

Patrón Repository con JDBC en Java
20:24 min - 12

Insertar datos en MySQL con PreparedStatement
12:01 min - 13

Método delete en JDBC con PreparedStatement
07:00 min - 14

Interfaz gráfica de CRUD con Java Swing
Viendo ahora
Transacciones
Conexiones Pool
JPA y ORM
Próximos pasos
Interfaz gráfica de CRUD con Java Swing
Resumen
Visualizar un CRUD en Java cobra otro sentido cuando lo conectas a una interfaz gráfica con Java Swing. Aprenderás a montar una ventana de gestión de empleados que agrega, actualiza y elimina registros conectados a tu base de datos, ideal si vienes de terminar tu CRUD y quieres probarlo en vivo.
¿Qué es Java Swing y por qué usarlo en tu CRUD?
Java Swing es una biblioteca de interfaz de usuario para aplicaciones de escritorio en Java. Te da componentes gráficos listos para construir ventanas, tablas, botones y formularios sin depender de herramientas externas.
¿Qué es Java Swing? Es una biblioteca nativa de Java que provee componentes gráficos como ventanas, tablas y botones para crear interfaces de escritorio.
En esta vista vas a apoyarte en dos componentes clave: el JFrame, que crea la ventana principal de tu aplicación, y el JTable, que muestra los datos en forma de tabla [0:30]. La idea es que cada acción del usuario refresque la tabla y refleje los cambios en tiempo real.
¿Cómo se estructura la clase SwingApp?
Dentro de tu proyecto creas un paquete llamado view y, dentro, una clase SwingApp [0:15]. Ahí concentras toda la lógica visual conectada a los métodos de tu CRUD.
La clase organiza el trabajo en bloques claros:
- Configuración de la ventana principal con JFrame.
- Creación de la tabla con JTable para mostrar empleados.
- Tres botones de acción: agregar, actualizar y eliminar.
- Estilos del panel de botones.
- Instancia del objeto repository para acceder a la base de datos.
- Carga inicial de empleados con el método
refreshEmployeeTable.
Después de definir la estructura, agregas ActionListener a cada botón para que escuchen los clics del usuario y disparen la lógica correspondiente.
¿Qué hace refreshEmployeeTable y por qué importa?
Este método obtiene la lista actualizada de empleados desde la base de datos y vuelve a pintar la tabla. Lo llamas después de cada operación, ya sea agregar, actualizar o eliminar, para que la interfaz siempre muestre el estado real de los datos [2:00].
También se usa el componente JLabel, que muestra texto o imágenes dentro de la interfaz gráfica, útil para etiquetas en formularios.
¿Cómo funcionan los botones de agregar, actualizar y eliminar?
Cada botón conecta con un método del CRUD que ya construiste, así no duplicas lógica de negocio.
Agregar empleado
Al presionar el botón se abre un formulario donde capturas nombre, apellido paterno, apellido materno, email y salario. Con esos datos creas un nuevo objeto employee y lo guardas con repository.saveEmployee [2:30]. Después se refresca la tabla y aparece un mensaje de confirmación: empleado agregado correctamente.
En la prueba en vivo se agregó a Ana Villanueva Acosta con correo ana@example.com, y al revisar en MySQL Workbench con un SELECT sobre la tabla employees, el registro número seis aparece guardado correctamente.
Actualizar empleado
Aquí el flujo cambia un poco. Primero te pide el ID del empleado a actualizar. Cuando lo ingresas, el sistema busca ese registro y precarga los datos en el formulario para que no escribas todo desde cero [3:30]. Modificas lo que necesites, guardas y la tabla se refresca.
¿Por qué precargar los datos al actualizar? Porque evita reescribir información existente y reduce errores; solo cambias el campo que realmente quieres modificar.
Si el ID no existe, la validación responde: no se encontró ningún empleado con el ID especificado. Y si escribes un valor no numérico, salta otro mensaje pidiendo un valor numérico válido.
Eliminar empleado
El botón eliminar pide el ID y lanza una confirmación: ¿está seguro de eliminar el empleado?. Si confirmas, se ejecuta el método delete y la tabla se refresca [4:30]. Si el ID no existe, simplemente no pasa nada, no se elimina ningún registro.
¿Cómo ejecutar y probar la vista desde el main?
Para correr la aplicación vas a tu clase main, instancias SwingApp y le pasas setVisible(true). Al ejecutar aparece la ventana de gestión de empleados con columnas para ID, nombre, apellido paterno, apellido materno, email y salario, más los tres botones de acción.
El flujo de prueba recomendado:
- Agregar un empleado nuevo y verificar en Workbench con
SELECT rows. - Actualizar un registro existente, por ejemplo cambiar el email del ID 1.
- Eliminar un ID válido y confirmar que desaparece de la tabla y de la base.
- Probar casos inválidos, como eliminar un ID inexistente o actualizar un ID que no está.
Nota un detalle importante: en esta vista no usas explícitamente getById ni findAll porque la tabla muestra en vivo todos los empleados y los cambios se reflejan al instante con cada refresh [5:30].
¿Qué validaciones conviene tener en la interfaz?
Las validaciones que ya están integradas cubren los errores más comunes al manipular registros:
- ID no encontrado al actualizar o eliminar.
- Valor no numérico ingresado en el campo ID.
- Error al obtener los datos del empleado desde el repositorio.
- Confirmación previa antes de eliminar.
Todas son personalizables, así que puedes adaptar los textos, agregar más reglas o cambiar el comportamiento según lo necesite tu proyecto.
Como reto, personaliza esta vista: añade colores, mejora el panel de botones, suma validaciones extra y ajusta los formularios al estilo de tu aplicación. ¿Qué cambios le harías tú a esta interfaz para que se sienta más profesional? Cuéntame en los comentarios.