0% encontró este documento útil (0 votos)
113 vistas4 páginas

Implementación del Patrón MVC en Java

El documento describe el patrón de diseño Modelo-Vista-Controlador (MVC) y cómo se ha aplicado en una interfaz gráfica de un juego de buscaminas. MVC separa la lógica del juego (Modelo), la interfaz de usuario (Vista) y la gestión de eventos (Controlador). La Vista observa al Modelo para actualizarse cuando cambia el estado del juego. El Controlador responde a los eventos de la Vista llamando a métodos del Modelo.

Cargado por

reynaldo_777
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
113 vistas4 páginas

Implementación del Patrón MVC en Java

El documento describe el patrón de diseño Modelo-Vista-Controlador (MVC) y cómo se ha aplicado en una interfaz gráfica de un juego de buscaminas. MVC separa la lógica del juego (Modelo), la interfaz de usuario (Vista) y la gestión de eventos (Controlador). La Vista observa al Modelo para actualizarse cuando cambia el estado del juego. El Controlador responde a los eventos de la Vista llamando a métodos del Modelo.

Cargado por

reynaldo_777
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programacin II

Curso 06/07

Laboratorio 6

LABORATORIO 6. PATRN MVC


Mayo, 2007

Descripcin del patrn Modelo-Vista-Controlador


MVC es un patrn de arquitectura de software que separa los datos de una aplicacin (Modelo), la interfaz de usuario (Vista), y la lgica de control (Controlador) en tres componentes distintos. A continuacin se describe brevemente el funcionamiento y cmo se ha aplicado el patrn de diseo en la interfaz grfica proporcionada. El patrn MVC se basa fundamentalmente en el uso del patrn Observador (ya utilizado en el Laboratorio 4). A continuacin se describen los distintos componentes: Vista: Ventanas de la interfaz grfica Implementan el patrn Observador. Vigilan el modelo (o la parte del modelo correspondiente) para reaccionar ante los cambios en su estado y mostrar la informacin de manera adecuada. Modelo: Clases desarrolladas en los laboratorios anteriores. Implementan el patrn Observable. Definen la lgica del juego. Informan a la Vista cuando se produce algn cambio en el estado. Controlador Responde a eventos que se producen en la Vista invocando los mtodos de las clases del modelo correspondientes. La siguiente figura (diagrama de secuencia UML) ilustra el funcionamiento del patrn MVC en una ventana concreta del Buscaminas (VentanaTablero). En un primer paso la ventana se registra como Observadora del Tablero (Observable). Cuando el usuario realiza una operacin en la ventana (click izquierdo en una casilla) la ventana comunica el evento al Controlador para que lo gestione. El Controlador invoca el mtodo clickIzquierdo del Tablero. El Tablero, abre la casilla correspondiente y avisa a la ventana para que actualice la informacin mostrada.

Programacin II
Curso 06/07

Laboratorio 6

A continuacin se describe cmo se ha desarrollado una ventana aplicando el patrn MVC. Para este ejemplo se ha seleccionado una clase sencilla: VentanaInicial.

La ventana debe aplicar el patrn Observer

public class VentanaInicial extends JDialog implements Observer Ventana Observer

Se implementa el mtodo update que se ejecuta cuando cambia el estado de la Sesion (Observable)

public void update(Observable arg0, Object arg1) { if (sesion.obtNombreUsuario() != null) { textNombre.setText(sesion.obtNombreUsuario()); } else { textNombre.setText(""); } textNivel.setText("" +sesion.obtNivel()); }

Programacin II
Curso 06/07

Laboratorio 6

El constructor de la ventana registra la ventana (Observer) en la Sesion (Observable)

public VentanaInicial(Frame frame, String title, boolean modal) { super(frame, title, modal); // Registrar la ventana como observador de la Sesion sesion.addObserver(this); // Colocar los componentes, redimensionar la ventana y colocarla centrada try { jbInit(); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = this.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height frameSize.height) / 2); } catch(Exception ex) {} // Actualizar la informacin de la pantalla update(sesion,null); }

Definir el controlador El controlador, generalmente, es una clase privada interna definida dentro de la Ventana. Se encarga de capturar los eventos en la interfaz grfica y de gestionarlos de manera adecuada. El controlador debe implementar las interfaces necesarias para la gestin de los posibles eventos de la interfaz grfica (ActionListener. MouseListener,...).

public class VentanaInicial extends JDialog implements Observer{ // Atributos y mtodos de la clase private Controlador controlador = new Controlador(); private class Controlador implements ActionListener { public void actionPerformed(ActionEvent arg0) { String s = textNombre.getText(); if (s.length() == 0) s="desconocido"; sesion.ponNombreUsuario(s); s = textNivel.getText(); if (s.length() == 0) s="1"; sesion.ponNivel(Integer.parseInt(s.trim())); setVisible(false); } } }

Registrar el controlador para que gestione los eventos de la interfaz grfica

Programacin II
Curso 06/07

Laboratorio 6

void jbInit() throws Exception { botonOk.setBorder(border4); botonOk.setText("OK"); botonOk.addActionListener(controlador); botonOk.setActionCommand("OK"); panelOk.add(botonOk, null); }

Si hay varios controles, se utiliza el actionCommand (una clave para identificar el objeto sobre el que se ha producido el evento) asignado para determinar qu operaciones realizar.

public class VentanaSiNo extends JDialog { void jbinit() throws Exception { botonNo.setActionCommand("botonNo"); botonNo.addActionListener(controlador); botonSi.setText("Si"); botonSi.setActionCommand("botonSi"); botonSi.addActionListener(controlador); } private class Controlador implements ActionListener { public void actionPerformed(ActionEvent pEvent) { if (pEvent.getActionCommand().equalsIgnoreCase("botonNo")) { respuesta = false; setVisible(false); } else { respuesta = true; setVisible(false); } } } }

También podría gustarte