Tutorial: Gestión de Múltiples Pantallas en una Aplicación JavaFX con Eclipse

Introducción

En aplicaciones complejas, es común que necesitemos gestionar múltiples pantallas o vistas. En este tutorial, aprenderás cómo implementar un sistema de navegación entre diferentes pantallas en una aplicación JavaFX, utilizando Eclipse como tu entorno de desarrollo. Este enfoque es útil para aplicaciones que requieren interfaces de usuario múltiples, como aplicaciones con flujos de usuario detallados, dashboards administrativos, o aplicaciones de software educativo.

Configuración del Entorno en Eclipse

Antes de comenzar, asegúrate de tener lo siguiente:

  1. Java Development Kit (JDK): Instala JDK 11 o superior, que incluye JavaFX.
  2. Eclipse IDE: Asegúrate de tener Eclipse instalado, con el plugin e(fx)clipse para facilitar el desarrollo de JavaFX.

Creación del Proyecto JavaFX

  1. Inicio del Proyecto: En Eclipse, crea un nuevo proyecto JavaFX seleccionando File > New > Project..., luego elige JavaFX Project y sigue los pasos del asistente.

Implementación del Código

Vamos a diseñar una aplicación que contiene un marco principal dentro del cual se pueden cargar diferentes pantallas. Para ello, utilizaremos un controlador principal que manejará los cambios de pantalla.

Estructura Básica
  1. Clase MainApplication: Clase principal que lanza la aplicación.
  2. ScreenController: Clase que controlará el intercambio de pantallas.
  3. Vistas: Archivos FXML para diferentes vistas.
Clase Principal – MainApplication
package application;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class MainApplication extends Application {
    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 800, 600);

        ScreenController mainContainer = new ScreenController();
        mainContainer.loadScreen("screen1", "Screen1.fxml");
        mainContainer.loadScreen("screen2", "Screen2.fxml");

        mainContainer.setScreen("screen1");

        root.getChildren().addAll(mainContainer);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Multi-Screen JavaFX Application");
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
ScreenController
package application;

import javafx.scene.layout.StackPane;
import java.util.HashMap;

public class ScreenController extends StackPane {
    private HashMap<String, Node> screens = new HashMap<>();

    public void addScreen(String name, Node screen) {
        screens.put(name, screen);
    }

    public void removeScreen(String name) {
        screens.remove(name);
    }

    public void loadScreen(String name, String resource) {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource(resource));
            Parent loadScreen = (Parent) loader.load();
            ControlledScreen myScreenControler = ((ControlledScreen) loader.getController());
            myScreenControler.setScreenParent(this);
            addScreen(name, loadScreen);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void setScreen(final String name) {
        if (screens.get(name) != null) {   //screen loaded
            if (!getChildren().isEmpty()) {    //if there is more than one screen
                getChildren().remove(0);                    //remove the displayed screen
                getChildren().add(0, screens.get(name));     //add the screen
            } else {
                getChildren().add(screens.get(name));       //no one else been displayed, then just show
            }
        }
    }
}
Interfaces y Controladores de Pantalla

Cada pantalla tendrá su propio controlador, y necesitarás una interfaz ControlledScreen para manejar la comunicación entre el ScreenController y los controladores individuales de las pantallas.

Conclusiones

Este tutorial introduce un método efectivo para manejar múltiples pantallas en una aplicación JavaFX, lo cual es fundamental para el desarrollo de aplicaciones de software complejas y de gran escala. Al utilizar un controlador central, podemos modularizar la navegación y hacer nuestro código más mantenible y escalable.

Ejecución y Pruebas

Ejecuta la aplicación desde Eclipse utilizando Run As > Java Application. Verás la ventana principal que puede cambiar entre diferentes pantallas según la interacción del usuario.

gray and black laptop computer
Photo by Pixabay on Pexels.com
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.