Introduzione a JavaFX StackPane

Java StackPane è un contenitore che presenta i suoi figli impilati ad altri. L'area del contenuto viene riempita ridimensionando i figli e se i nodi figli non sono in grado di ridimensionare, verrà utilizzato Pos.CENTER che è la proprietà di allineamento predefinita. Normalmente i nodi figlio non sono in grado di ridimensionare quando la dimensione massima lo ha impedito. Java Stack Pane può essere istanziato dalla classe javafx.scene.layout.StackPane. Quando il padding è impostato, i nodi figlio saranno disposti solo all'interno degli inserti. Sintassi, costruttori e molti altri aspetti di JavaFX StackPane saranno discussi nelle sezioni seguenti.

Sintassi:

In JavaFX, StackPane può essere creato come mostrato di seguito.

StackPane sp = new StackPane();

Assicurarsi sempre che la classe javafx.scene.layout.StackPane sia importata nel programma prima di eseguire il codice.

Costruttori e proprietà di JavaFX StackPane

Di seguito abbiamo discusso i costruttori e le proprietà di javafx stackpane:

Costruttori

Esistono due costruttori per JavaFX StackPane. Loro sono:

  • StackPane (): verrà creato un layout StackPane con un allineamento predefinito. In JavaFX StackPane, CENTER viene considerato come un allineamento predefinito.
  • StackPane (Nodo …. nd): verrà creato un layout StackPane con un allineamento predefinito.

Proprietà

Java StackPane ha un allineamento delle proprietà che viene utilizzato per l'allineamento dei figli all'interno dell'altezza e della larghezza di StackPane.

Metodi di StackPane

Java StackPane ha diversi metodi che eseguono funzionalità diverse. Alcuni dei metodi comunemente usati sono spiegati di seguito:

  • clearConstraints (Nodechild): i vincoli StackPane verranno rimossi dal nodo figlio.
  • computeMinWidth (doppia altezza): la larghezza minima dell'area verrà calcolata con questo metodo.
  • computeMinHeight (doppia larghezza): l'altezza minima della regione verrà calcolata usando questo metodo.
  • getAlignment (): verrà restituito il valore della proprietà Alignment.
  • setAlignment (Posvalue): verrà impostato il valore della proprietà Alignment.
  • setAlignment (Node child, Posvalue): il valore della proprietà Alignment verrà impostato per il child presente nello stackpane.
  • getMargin (Nodechild): verrà restituito il valore dei vincoli di margine.
  • computePrefWidth (doppia altezza): verrà calcolata la larghezza preferita per la regione necessaria per la data altezza.
  • computePrefHeight (doppia larghezza): verrà calcolata l'altezza preferita per la regione necessaria per la larghezza data.

Programma per implementare StackFane JavaFX

Ora, vediamo diversi programmi JavaFX per implementare JavaFX StackPane.

Programma 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);
)
)

Produzione:

Uno StackPane viene creato con due pulsanti. Come puoi vedere, un pulsante si trova nella parte superiore dell'altro pulsante che soddisfa le condizioni di StackPane.

Programma n. 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);
)
)

Produzione:

Uno StackPane viene creato con 1 cerchio, 1 sfera e un testo. Tutti questi sono in cima agli altri dove il testo è in cima.

Programma 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);
)
)

Produzione :

Quando si esegue il codice, viene visualizzata una finestra di dialogo con una casella di controllo e un pulsante.

Facendo clic sul pulsante Click me, una casella di controllo verrà sostituita da un pulsante.

Se si fa di nuovo clic sul pulsante, verrà visualizzata un'etichetta.

Articoli consigliati

Questa è una guida a JavaFx StackPane. Qui discutiamo i costruttori e le proprietà, i metodi di JavaFx StackPane con diversi programmi. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Costruttori del pulsante JavaFX
  2. Struttura dell'applicazione JavaFx
  3. I 5 migliori layout JavaFX
  4. Sintassi utilizzata nell'etichetta JavaFX

Categoria: