Una aplicación Swing bien estructurada separa la lógica del negocio de la presentación. El patrón MVC (Modelo-Vista-Controlador) es el más habitual:
- Modelo: las clases de negocio (entidades, servicios, repositorios) — sin ninguna importación de Swing.
- Vista: los componentes Swing (JFrame, JPanel, JTable…) — solo presenta datos, no los procesa.
- Controlador: conecta los listeners de la vista con los métodos del modelo.
Ejemplo: aplicación de gestión de contactos
// Modelo
record Contacto(String nombre, String email, String telefono) {}
class ContactoService {
private final List<Contacto> lista = new ArrayList<>();
public void agregar(Contacto c) { lista.add(c); }
public void eliminar(int indice) { lista.remove(indice); }
public List<Contacto> getTodos() { return Collections.unmodifiableList(lista); }
}
// Vista (JPanel con tabla y formulario)
class ContactoPanel extends JPanel {
final JTextField campoNombre = new JTextField(20);
final JTextField campoEmail = new JTextField(20);
final JTextField campoTelef = new JTextField(15);
final JButton btnGuardar = new JButton("Guardar");
final JButton btnEliminar = new JButton("Eliminar");
final ContactoTableModel modelo = new ContactoTableModel();
final JTable tabla = new JTable(modelo);
ContactoPanel() { initUI(); }
// ... initUI() crea el layout con los campos y la tabla
}
// Controlador
class ContactoController {
private final ContactoService service;
private final ContactoPanel vista;
ContactoController(ContactoService s, ContactoPanel v) {
this.service = s; this.vista = v;
v.btnGuardar.addActionListener(e -> guardar());
v.btnEliminar.addActionListener(e -> eliminar());
}
private void guardar() {
if (vista.campoNombre.getText().isBlank()) return;
Contacto c = new Contacto(
vista.campoNombre.getText().trim(),
vista.campoEmail.getText().trim(),
vista.campoTelef.getText().trim()
);
service.agregar(c);
vista.modelo.setContactos(service.getTodos());
vista.campoNombre.setText("");
}
}
Recursos y próximos pasos
Para profundizar en Swing con Java 21:
- Documentación oficial: API Swing en Java 21
- FlatLaf: formdev.com/flatlaf — aspecto moderno, gratuito y de código abierto.
- MigLayout: miglayout.com — el gestor de diseño más potente para Swing.
- Tutoriales Oracle: The Java Tutorials — Creating a GUI with Swing
Si quieres conectar tu aplicación Swing a una base de datos, consulta nuestro tutorial de Acceso a bases de datos con JDBC, o aprende a desplegarla como aplicación web con Servlets y JSP con Jakarta EE 10.
Imagen: Pexels / Zayed Hossain
