Un regalito que trajo JavaFX fue javafx.stage.Stage. En serio que me sirvió muchísimo cuando estaba empezando a desarrollar interfaces gráficas, porque me era súper difícil crear ventajas y gracias a esta herramienta pude lograrlo en poco tiempo y simplifiqué mis proyectos. Créeme que no perderás el tiempo aprendiendo a usarla, porque te servirá en muchas situaciones, entonces podrás ahorrarte varias complicaciones y harás que tu vida como desarrollador sea más fácil.
¿Qué es javafx.stage.Stage?
Javafx.stage.Stage es una clase que introdujo JavaFX y representa las ventanas de una aplicación. Tienes que entender que, cada ventana, ya sea la principal o secundarias, es una instancia de esta clase. Entonces, dentro de un Stage, puedes agregar escenas (Scene), que contienen todos los elementos visuales de tu aplicación. Lo bueno es que este diseño modular facilita bastante la organización y la personalización de tus proyectos.
Características
- Gestión de ventanas: Crea y controla múltiples ventanas en tu aplicación.
- Personalización: Ajusta el tamaño, posición, estilo y comportamiento de cada ventana.
- Modularidad: Permite añadir diferentes escenas y controlar su contenido dinámicamente.
Creando y mostrando una ventana con Stage
Para usar un Stage, primero necesitas crear una instancia. Sin embargo, una ventana no será visible hasta que llames al método show() o showAndWait().
Ejemplo: Crea una ventana básica
import javafx.application.Application;
import javafx.stage.Stage;
public class BasicStageExample extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Ventana principal");
primaryStage.setWidth(400);
primaryStage.setHeight(300);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Lo que hice en este ejemplo fue definir una ventana principal con un título y dimensiones específicas.
Diferencia entre show() y showAndWait()
Te explico brevemente la diferencia entre estos dos:
- show(): Este te muestra la ventana y te deja continuar con el flujo del programa.
- showAndWait(): Muestra la ventana y bloquea la ejecución hasta que se cierre.
Cómo configurar escenas en un Stage
Recuerda que un Stage no muestra contenido por sí solo; necesita una Scene. La Scene actúa como un lienzo donde puedes colocar los elementos visuales de tu aplicación.
Ejemplo: Añade contenido a la ventana
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SceneExample extends Application {
@Override
public void start(Stage primaryStage) {
Label label = new Label("¡Hola, JavaFX!");
StackPane root = new StackPane(label);
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Ventana con contenido");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Aquí, usé un StackPane como contenedor para un simple mensaje.
Cómo personalizar javafx.stage.Stage
Te contaba que javafx.stage.Stage te deja ajustar detalles como posición, tamaño, estilo y modalidad.
Configurar posición y tamaño
Puedes establecer la posición y dimensiones de la ventana con los métodos setX(), setY(), setWidth() y setHeight().
Ejemplo: Ajusta la posición y el tamaño
import javafx.application.Application;
import javafx.stage.Stage;
public class PositionExample extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Ventana personalizada");
primaryStage.setWidth(600);
primaryStage.setHeight(400);
primaryStage.setX(100);
primaryStage.setY(150);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Estilos de ventana
También puedes modificar el estilo de la ventana con initStyle(StageStyle). Mira estos estilos:
- DECORATED: Ventana con barra de título y botones estándar.
- UNDECORATED: Ventana sin barra de título ni bordes.
- TRANSPARENT: Fondo transparente.
- UTILITY: Ventana con decoraciones mínimas.
Ejemplo: Cambia el estilo
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class StyleExample extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.setWidth(400);
primaryStage.setHeight(300);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Cómo usar múltiples ventanas
Lo grandioso es que JavaFX te permite crear varias ventanas utilizando múltiples instancias de Stage.
Ejemplo: Ventana secundaria
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MultiStageExample extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Ventana principal");
Button button = new Button("Abrir ventana secundaria");
button.setOnAction(e -> {
Stage secondaryStage = new Stage();
secondaryStage.setTitle("Ventana secundaria");
secondaryStage.setWidth(300);
secondaryStage.setHeight(200);
secondaryStage.show();
});
StackPane root = new StackPane(button);
primaryStage.setScene(new Scene(root, 400, 300));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
¿Lo notaste? En este caso, el botón abre una nueva ventana.
Consejos para trabajar con javafx.stage.Stage
- Usa estilos y modalidades adecuadas: Define si las ventanas bloquean otras interacciones según su propósito.
- Organiza tus escenas: Mantén el código modular y usa escenas independientes para cada funcionalidad.
- Controla eventos del Stage: Aprovecha eventos como cierre o minimización para gestionar recursos.
javafx.stage.Stage es el centro de las aplicaciones JavaFX. Ahora puedes crear ventanas personalizadas, gestionar múltiples instancias y ofrecer una experiencia visual atractiva. Con estas herramientas, construirás aplicaciones completas y adaptadas a cualquier necesidad.
Si te apasiona el desarrollo y quieres aprender a dominar JavaFX y otras tecnologías avanzadas, nuestro Bootcamp de Java Full Stack es perfecto para ti. Descubrirás cómo crear aplicaciones completas y transformar tu carrera en tiempo récord. ¡Apúntate ahora y empieza a construir tu futuro!