Desarrollo de Aplicaciones Multi-Ventana en JavaFX

Introducción

JavaFX ofrece potentes herramientas para el desarrollo de interfaces gráficas de usuario (GUI), permitiendo la creación de aplicaciones multi-ventana de forma sencilla. En este tutorial, exploraremos cómo desarrollar una aplicación en JavaFX que consiste en dos ventanas, donde la primera ventana incluye un botón que, al ser presionado, abre la segunda ventana. Este tipo de diseño es común en aplicaciones de software que requieren interacciones entre múltiples interfaces.

Configuración del Entorno en Eclipse

Para seguir este tutorial, asegúrate de tener instalado Java Development Kit (JDK) 11 o superior y Eclipse IDE. JavaFX ya está incluido en JDK 11 y versiones superiores.

  1. Instalación del Plugin e(fx)clipse: Abre Eclipse, ve a Help > Eclipse Marketplace, busca e instala e(fx)clipse, que facilita el desarrollo en JavaFX.

Creación del Proyecto

  1. Crear un Nuevo Proyecto JavaFX: En Eclipse, ve a File > New > Project..., elige JavaFX Project y sigue los pasos para configurar tu proyecto.

Implementación del Código

Vamos a crear dos clases en Eclipse, cada una correspondiendo a una ventana diferente de la aplicación.

Ventana Principal
package application;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MainApplication extends Application {

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Ventana Principal");

        Button btnOpen = new Button("Abrir Segunda Ventana");
        btnOpen.setOnAction(event -> {
            SecondWindow.display();
        });

        StackPane layout = new StackPane();
        layout.getChildren().add(btnOpen);
        Scene scene = new Scene(layout, 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.geometry.*;

public class SecondWindow {

    public static void display() {
        Stage window = new Stage();
        window.initModality(Modality.APPLICATION_MODAL);
        window.setTitle("Segunda Ventana");
        window.setMinWidth(250);

        Label label = new Label("Esta es la Segunda Ventana");
        Button closeButton = new Button("Cerrar");
        closeButton.setOnAction(e -> window.close());

        VBox layout = new VBox(10);
        layout.getChildren().addAll(label, closeButton);
        layout.setAlignment(Pos.CENTER);

        Scene scene = new Scene(layout);
        window.setScene(scene);
        window.showAndWait();
    }
}

Explicación del Código

  • Ventana Principal (MainApplication): Define un botón que, al ser clickeado, llama al método display() de la clase SecondWindow.
  • Segunda Ventana (SecondWindow): Esta clase contiene un método estático display() que configura y muestra una nueva ventana. Utiliza Modality.APPLICATION_MODAL para bloquear la interacción con la ventana principal mientras la segunda ventana está abierta.

Ejecución y Pruebas

Para probar la aplicación, ejecuta MainApplication como una aplicación Java desde Eclipse. Deberías ver la ventana principal con un botón para abrir la segunda ventana.

Conclusión

Este tutorial demuestra cómo gestionar múltiples ventanas en una aplicación JavaFX. Este enfoque es fundamental para aplicaciones que requieren interfaces de usuario separadas para diferentes tareas. Con JavaFX y Eclipse, puedes construir interfaces complejas y modulares con relativa facilidad.

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.