Introducción a JavaFX StackPane

Java StackPane es un contenedor que presenta a sus hijos apilados a otros. El área de contenido se llena cambiando el tamaño de los elementos secundarios y si los nodos secundarios no pueden cambiar el tamaño, se utilizará Pos.CENTER, que es la propiedad de alineación predeterminada. Normalmente, los nodos secundarios no pueden cambiar el tamaño cuando el tamaño máximo lo impide. Java Stack Pane se puede crear instancias de la clase javafx.scene.layout.StackPane. Cuando se establece el relleno, los nodos secundarios se distribuirán solo dentro de las inserciones. La sintaxis, los constructores y varios otros aspectos de JavaFX StackPane se analizarán en las siguientes secciones.

Sintaxis:

En JavaFX, StackPane se puede crear como se muestra a continuación.

StackPane sp = new StackPane();

Siempre asegúrese de que la clase javafx.scene.layout.StackPane se importe en el programa antes de ejecutar el código.

Constructores y propiedades de JavaFX StackPane

A continuación hemos discutido los constructores y las propiedades de javafx stackpane:

Constructores

Hay dos constructores para JavaFX StackPane. Son:

  • StackPane (): se creará un diseño StackPane con una alineación predeterminada. En JavaFX StackPane, CENTER se considera como una alineación predeterminada.
  • StackPane (Nodo … nd): se creará un diseño StackPane con una alineación predeterminada.

Propiedades

Java StackPane tiene una alineación de propiedad que se utiliza para la alineación de los elementos secundarios que está dentro del ancho y alto de StackPane.

Métodos de StackPane

Java StackPane tiene varios métodos que realizan diferentes funcionalidades. Algunos de los métodos comúnmente utilizados se explican a continuación:

  • clearConstraints (Nodechild): las restricciones de StackPane se eliminarán del nodo secundario.
  • computeMinWidth (doble altura): el ancho mínimo de la región se calculará utilizando este método.
  • computeMinHeight (doble ancho): la altura mínima de la región se calculará utilizando este método.
  • getAlignment (): se devolverá el valor de la propiedad de alineación.
  • setAlignment (Posvalue): se establecerá el valor de la propiedad de alineación.
  • setAlignment (Node child, Posvalue): el valor de la propiedad de alineación se establecerá para el hijo que está presente en el panel de pila.
  • getMargin (Nodechild): se devolverá el valor de las restricciones de margen.
  • computePrefWidth (doble altura): se calculará el ancho preferido para la región que se necesita para la altura dada.
  • computePrefHeight (doble ancho): se calculará la altura preferida para la región que se necesita para el ancho dado.

Programa para implementar JavaFX StackPane

Ahora, veamos diferentes programas JavaFX para implementar JavaFX StackPane.

Programa n. ° 1

//java program to demonstrate stack pane
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXStackPaneExample extends Application (
//application starts at this point
@Override
public void start(Stage s) throws Exception (
//create button 1
Button b1 = new Button(" This button is on the bottom ");
//create button 2
Button b2 = new Button("This button is on the top");
//create stackpane
StackPane r = new StackPane();
//create scene
Scene sc = new Scene(r, 200, 200);
r.getChildren().addAll(b1, b2);
//set the scene
s.setScene(sc);
//display the result
s.show();
)
public static void main(String() args) (
launch(args);
)
)

Salida:

Un StackPane se crea con dos botones. Como puede ver, un botón está en la parte superior del otro botón que satisface la condición de StackPane.

Programa 2

//java program to demonstrate stack pane with the help of shapes
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
//package for different shapes
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Sphere;
//packages for the text font, size etc
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
//sample classs that extends Application class
public class JavaFXStackPaneExample extends Application (
//application starts at this point
@Override
public void start(Stage s) (
//Create a text
Text txt = new Text("This is an example of Stackpane");
//Set the font of the above created text
txt.setFont(Font.font(null, FontWeight.BOLD, 20));
//Set the color of the text
txt.setFill(Color.GREEN);
//set the position of the text
txt.setX(20);
txt.setY(50);
//Draw a circle
Circle c = new Circle(400, 200, 100);
//fill color
c.setFill(Color.RED);
//stroke color
c.setStroke(Color.BLACK);
//Draw Sphere
Sphere sp = new Sphere(30);
//Create a Stackpane
StackPane spn = new StackPane();
//Set the margin for the above circle
spn.setMargin(c, new Insets(50, 50, 50, 50));
ObservableList li = spn.getChildren();
//Add the created child nodes to the pane
li.addAll(c, sp, txt);
//Create a scene
Scene sc = new Scene(spn);
//Set title
s.setTitle("Stack Pane Sample");
//Add scene to the stage
s.setScene(sc);
//Display the results
s.show();
)
public static void main(String args())(
launch(args);
)
)

Salida:

Se crea un StackPane con 1 círculo, 1 esfera y un texto. Todos estos se encuentran encima de otros donde el texto está en la parte superior.

Programa n. ° 3

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
public class JavaFXStackPaneExample extends Application (
private StackPane sp;
//application starts at this point
@Override
public void start(Stage s) throws Exception (
VBox r = new VBox();
// create StackPane
sp = new StackPane();
// Add Label
Label lb = new Label("Hi . . I am a label ..!!");
//set visibility as false
lb.setVisible(false);
sp.getChildren().add(lb);
// Add Button
Button b = new Button("Hi .. I'm a Button.. ");
//set visibility as false
b.setVisible(false);
sp.getChildren().add(b);
// Add CheckBox and set its opacity and visibility
CheckBox cb = new CheckBox("Hi… I'm a CheckBox");
//set opacity
cb.setOpacity(1);
//set visibility as true
cb.setVisible(true);
sp.getChildren().add(cb);
sp.setPrefSize(400, 150);
r.getChildren().add(sp);
Button cbtn = new Button("Click me");
r.getChildren().add(cbtn);
r.setAlignment(Pos.CENTER);
Scene sc = new Scene(r, 600, 250);
s.setTitle("StackPane Sample");
s.setScene(sc);
//action to be performed on clicking the button
cbtn.setOnAction(new EventHandler() (
@Override
public void handle(ActionEvent ev) (
//declaration of function
functopchange();
)
));
s.show();
)
//definition of function
private void functopchange() (
ObservableList nd = this.sp.getChildren();
if (nd.size() > 1) (
//top node
Node tN = nd.get(nd.size()-1);
//new top node
Node ntN = nd.get(nd.size()-2);
tN.setVisible(false);
tN.toBack();
ntN.setVisible(true);
)
)
public static void main(String() args) (
launch(args);
)
)

Salida:

Al ejecutar el código, aparece un cuadro de diálogo con una casilla de verificación y un botón.

Al hacer clic en el botón Hacer clic en mí, una casilla de verificación será reemplazada por un botón.

Si vuelve a hacer clic en el botón, se mostrará una etiqueta.

Artículos recomendados

Esta es una guía de JavaFx StackPane. Aquí discutimos los constructores y propiedades, métodos de JavaFx StackPane con diferentes programas. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Constructores del botón JavaFX
  2. Estructura de la aplicación JavaFx
  3. Los 5 diseños principales de JavaFX
  4. Sintaxis utilizada en la etiqueta JavaFX