Introducción
Crear una aplicación que maneje múltiples ventanas es una habilidad esencial para desarrolladores de aplicaciones de escritorio. En este tutorial, aprenderás a implementar una aplicación JavaFX que abre una segunda ventana desde la principal, utilizando Eclipse como IDE. Esta funcionalidad es útil para aplicaciones que requieren interacciones adicionales o separadas, como herramientas administrativas, software de edición, o aplicaciones de gestión de datos.
Configuración del Entorno de Desarrollo
Antes de comenzar a programar, asegúrate de que tienes lo siguiente configurado:
- Java Development Kit (JDK): Instala JDK 11 o superior, que ya incluye JavaFX.
- Eclipse IDE: Asegúrate de tener Eclipse instalado, idealmente con el plugin e(fx)clipse para facilitar el desarrollo de JavaFX.
Creación del Proyecto JavaFX
- Inicio del Proyecto: En Eclipse, crea un nuevo proyecto JavaFX yendo a
File > New > JavaFX Project
. Sigue los pasos en el asistente para configurar tu proyecto.
Estructura del Código
El proyecto consistirá en dos clases: una para la ventana principal y otra para la ventana secundaria.
Clase 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 openButton = new Button("Abrir Ventana Secundaria");
openButton.setOnAction(event -> SecondaryWindow.display());
StackPane root = new StackPane();
root.getChildren().add(openButton);
Scene scene = new Scene(root, 350, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Clase Secundaria
package application;
import javafx.stage.Stage;
import javafx.stage.Modality;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.geometry.Pos;
public class SecondaryWindow {
public static void display() {
Stage secondaryStage = new Stage();
secondaryStage.initModality(Modality.APPLICATION_MODAL);
secondaryStage.setTitle("Ventana Secundaria");
secondaryStage.setMinWidth(250);
Label message = new Label("Esta es la Ventana Secundaria.");
Button closeButton = new Button("Cerrar");
closeButton.setOnAction(e -> secondaryStage.close());
VBox layout = new VBox(10);
layout.getChildren().addAll(message, closeButton);
layout.setAlignment(Pos.CENTER);
Scene scene = new Scene(layout, 200, 100);
secondaryStage.setScene(scene);
secondaryStage.showAndWait();
}
}
Descripción del Código
- Clase Principal (
MainApplication
): Configura una ventana con un botón que, al ser presionado, invoca la ventana secundaria. - Clase Secundaria (
SecondaryWindow
): Define una ventana modal que muestra un mensaje y contiene un botón para cerrar la ventana. Esto asegura que el usuario debe cerrar la ventana secundaria antes de regresar a la ventana principal.
Ejecución y Pruebas
Ejecuta la aplicación desde Eclipse utilizando Run As > Java Application
. Verás la ventana principal con un botón. Al hacer clic en este botón, se abrirá la ventana secundaria.
Conclusión
Este tutorial te ha guiado a través del proceso de desarrollo de una aplicación JavaFX que maneja múltiples ventanas, una habilidad crucial para la creación de aplicaciones de escritorio modernas y funcionales. La capacidad de interactuar con múltiples ventanas es fundamental en muchos contextos de software, proporcionando una interacción del usuario más rica y dividida.
![gray and black laptop computer](https://infogonzalez.com/wp-content/uploads/2024/02/pexels-photo-265087-1024x682.jpeg)
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.