Hola a todos, hoy vamos a ver como abrir un dialogo o ventana en JavaFX.
Tarde o temprano, necesitamos abrir una ventana adicional en nuestra aplicación de JavaFX.
Para abrir otra ventana, se puede hacer de esta forma:
@FXML private void abrirVentanaHija(ActionEvent event) { try { // Cargo la vista FXMLLoader loader = new FXMLLoader(getClass().getResource("/vista/VentanaHijaVista.fxml")); // Cargo la ventana Parent root = loader.load(); // Creo el Scene Scene scene = new Scene(root); Stage stage = new Stage(); stage.initModality(Modality.APPLICATION_MODAL); stage.setScene(scene); stage.showAndWait(); } catch (IOException e) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setHeaderText(null); alert.setTitle("Error"); alert.setContentText(e.getMessage()); alert.showAndWait(); } }
Vamos explicando paso a paso:
// Cargo la vista FXMLLoader loader = new FXMLLoader(getClass().getResource("/vista/VentanaHijaVista.fxml"));
Con FXMLLoader, cargamos la vista a través de una ruta. Os recomiendo ponerlo de la forma que veis. También os aconsejo que metáis las vistas en un paquete.
// Cargo la ventana Parent root = loader.load();
Con esto, cargo la ventana usando el loader, ya que me hará falta para crear el Stage y el Scene.
// Creo el Scene Scene scene = new Scene(root); Stage stage = new Stage(); stage.initModality(Modality.APPLICATION_MODAL); stage.setScene(scene); stage.showAndWait();
Aquí creamos el Scene con el root antes creado por el loader. Después, creo el Stage, lo inicializo en modo modal (hasta que no se cierre esa ventana, no me deja ir a cualquier otra). Por último, lo muestro y espero a que cierre, en el codigo se queda esperando de verdad.
Para cerrar la ventana hija, haremos lo que vimos en:
Este es el resultado final:
¿Quieres descargarte el proyecto? Aquí lo tienes.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudar.
Deja una respuesta