UD03A01_AgendaTelefonica (MVC)
Enunciado de la tarea: Agenda telefónica (MVC)
Descripción general
Basándote en la tarea UD02A03 – Agenda telefónica desarrollada en la Unidad 2, realiza las modificaciones necesarias para adaptar la aplicación al patrón Modelo–Vista–Controlador (MVC) utilizando JavaFX con FXML y Scene Builder.
El objetivo es mejorar la organización, la mantenibilidad y la reutilización del código, aplicando una correcta separación de responsabilidades y buenas prácticas de desarrollo en JavaFX.
Requisitos obligatorios
1) Aplicación del patrón MVC
Deberás:
- Separar claramente la aplicación en:
- Vista (FXML)
- Estilos (CSS)
- Controlador (Controller)
- Modelo (Model)
- Aplicación principal (Main)
- Implementar la vista mediante un archivo FXML, que contenga únicamente la definición de la interfaz gráfica (sin lógica).
- Crear un controlador que:
- gestione los eventos de la interfaz (
onAction, etc.), - y realice la interacción con el modelo.
- gestione los eventos de la interfaz (
- Desarrollar un modelo (
AgendaModelo) que encapsule:- los datos de la agenda,
- y la lógica, incluyendo la comprobación de duplicados (por ejemplo: contacto ya existente).
- Adaptar la clase principal para que:
- se limite a cargar el FXML con FXMLLoader,
- y muestre la interfaz en el
Stage, - sin incluir lógica de presentación ni lógica de negocio.
2) Estilos con CSS externo
Extrae todos los estilos visuales a un archivo CSS externo llamado:
Agenda.css
La aplicación deberá enlazar este CSS al FXML correspondiente.
Los estilos a aplicar son los indicados en la tarea UD02A03
Configuraciones que NO se pueden (o no conviene) hacer con CSS
Ten en cuenta que hay propiedades que no son estilo, sino layout (propiedades del nodo). Por tanto, se deben configurar en Scene Builder (Inspector > Properties) o en código:
-
Espaciado entre paneles →
HBox spacing = 20 -
Espaciado entre componentes →
VBox spacing = 10 -
Alineación →
Pos.TOP_LEFT,Pos.TOP_CENTER,Pos.CENTER_LEFT -
Anchura preferida de la tabla →
TableView prefWidth = 400 -
Placeholder (promptText) de TextField → se define con
promptText
StyleClass a asignar en Scene Builder
Para que el CSS funcione, debes asignar clases (styleClass) a los nodos.
Resultado esperado
Una aplicación funcional equivalente a la de la UD02A03, pero organizada en MVC con FXML + Scene Builder y estilos aplicados desde un CSS externo, respetando la separación de responsabilidades y la lógica de duplicados en el modelo.
- 12 de xaneiro de 2026, 5:22 PM