Aplicando MVC¶
Para trabajar con el modelo vista controlador, vamos a crear los siguientes elementos:
-
Para la clase controlador creamos un atributo que sea del tipo clase vista.
public class CartasController { // Clase controlador private CartasApplication app; public CartasController(CartasApplication app) { this.app = app; } }
-
Para la clase vista, cread un objeto de clase controlador y le pasáis un
this
al constructor.De esta forma, estáis pasándole la vista al controlador. Es una forma de relacionarlos de forma cruzada. Ahora, si yo invoco al objeto app en la clase controlador, puedo acceder a todos los métodos y atributos de la clase vista.public class CartasApplication extends Application { // Clase vista CartasController cont = new CartasController(this); protected TextArea areaTexto = new TextArea(); protected Button boton = new Button(); }
Si se quiere una visión global del proyecto, se podría iniciar con los siguientes ficheros:
public class CartasController { // Clase controlador
private CartasApplication app;
public CartasController(CartasApplication app) {
this.app = app;
}
EventHandler<MouseEvent> eventoPrueba = e -> {
app.areaTexto.setText("Pongo texto desde controlador");
};
}
public class CartasApplication extends Application { // Clase vista
CartasController cont = new CartasController(this);
protected TextArea areaTexto = new TextArea();
protected Button boton = new Button();
public static void main(String[] args) {
launch();
}
@Override
public void start(Stage stage) {
}
}
public class CartasController { // Clase controlador
private CartasApplication app;
public CartasController(CartasApplication app) {
this.app = app;
}
public void ponerTexto() {
app.areaTexto.setText("Pongo texto desde controlador");
}
EventHandler<MouseEvent> eventoPrueba = e -> {
// Eventos para el botón
};
}
public class CartasApplication extends Application { // Clase vista
CartasController cont = new CartasController(this);
protected TextArea areaTexto = new TextArea();
protected Button boton = new Button();
public static void main(String[] args) {
launch();
}
@Override
public void start(Stage stage) {
cont.ponerTexto(); // Ponemos texto a un text area desde el controlador
// Ahora asignamos un evento
boton.addEventHandler(MouseEvent.MOUSE_CLICKED, cont.eventoPrueba);
}
}