bloque4:mvc
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
bloque4:mvc [13/04/2018 09:35] – [Controlador] Fernando Valdeón | bloque4:mvc [16/09/2024 20:53] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 9: | Línea 9: | ||
* El **controlador** es la capa que comunica a las otras dos. Al llamar a su constructor, | * El **controlador** es la capa que comunica a las otras dos. Al llamar a su constructor, | ||
- | Resulta aconsejable que al menos las clases que representan el modelo, la vista y el controlador estén dentro del mismo paquete ('' | + | Resulta aconsejable que al menos las clases que representan el modelo, la vista y el controlador |
===== Vista ===== | ===== Vista ===== | ||
Línea 72: | Línea 72: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Controlador ===== | ||
+ | La clase Controlador añade los manejadores de eventos (listeners) a cada elemento de la vista que lo provoque. En el momento de añadir los listeners también los creamos, o sea generamos el código de respuesta a ese evento. //Qué pasa cuando se pulsa un botón//. | ||
+ | |||
+ | <code java> | ||
+ | public class Controlador{ | ||
+ | private Vista vista; | ||
+ | private Modelo modelo; | ||
+ | | ||
+ | // | ||
+ | public Controlador(Vista vista, Modelo modelo){ | ||
+ | this.vista = vista; | ||
+ | this.modelo = modelo; | ||
+ | | ||
+ | initEventHandlers(); | ||
+ | } | ||
+ | | ||
+ | //Método para añadir los listeners a los elementos que las generan (botones) | ||
+ | public void initEventHandlers(){ | ||
+ | | ||
+ | | ||
+ | | ||
+ | ... | ||
+ | //Código que quiero que ocurra al pulsar el botón de aceptar | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // | ||
+ | ... | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Controlador implementando interfaces ==== | ||
+ | Otra forma mucho más elegante de implementar la clase Controlador es haciendo que trabaje como **Listener** de ciertos tipos de eventos. Para eso haremos que la clase implemente las distintas '' | ||
+ | |||
+ | <code java> | ||
+ | public class Controlador implements ActionListener{ | ||
+ | private Vista vista; | ||
+ | private Modelo modelo; | ||
+ | | ||
+ | // | ||
+ | public Controlador(Vista vista, Modelo modelo){ | ||
+ | this.vista = vista; | ||
+ | this.modelo = modelo; | ||
+ | | ||
+ | asociarListeners(this); | ||
+ | } | ||
+ | | ||
+ | //Metodo que asocia esta clase como listener de los botones | ||
+ | public void asociarListeners(ActionListener listener){ | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | //Metodo que la interface ActionListener obliga a implementar | ||
+ | //Es el encargado de gestionar los eventos ActionEvent de los botones | ||
+ | @Override | ||
+ | public void actionPerformed(ActionEvent evt) { | ||
+ | | ||
+ | |||
+ | | ||
+ | case " | ||
+ | // | ||
+ | | ||
+ | case " | ||
+ | // | ||
+ | | ||
+ | |||
+ | ... | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
===== Lanzar la aplicación ===== | ===== Lanzar la aplicación ===== |
bloque4/mvc.1523612132.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)