Inleiding tot JavaFX StackPane

Java StackPane is een container die zijn kinderen op elkaar stapelt. Het inhoudsgebied wordt gevuld door het formaat van de kinderen te wijzigen en als de knooppunten van de kinderen het formaat niet kunnen wijzigen, wordt Pos.CENTER gebruikt, wat de standaarduitlijningseigenschap is. Normaal gesproken kunnen onderliggende knooppunten het formaat niet wijzigen wanneer de maximale grootte dit heeft voorkomen. Java Stack Pane kan worden geïnstantieerd vanuit de klasse javafx.scene.layout.StackPane. Wanneer de opvulling is ingesteld, worden onderliggende knooppunten alleen binnen de inzetstukken geplaatst. Syntaxis, constructors en verschillende andere aspecten van JavaFX StackPane worden in de volgende secties besproken.

Syntaxis:

In JavaFX kan StackPane worden gemaakt zoals hieronder wordt getoond.

StackPane sp = new StackPane();

Zorg er altijd voor dat de klasse javafx.scene.layout.StackPane in het programma wordt geïmporteerd voordat de code wordt uitgevoerd.

Constructors en eigenschappen van JavaFX StackPane

Hieronder hebben we de constructors en eigenschappen van javafx stackpane besproken:

constructors

Er zijn twee constructors voor JavaFX StackPane. Zij zijn:

  • StackPane (): Er wordt een StackPane-lay-out gemaakt met een standaarduitlijning. In JavaFX StackPane wordt CENTER beschouwd als een standaarduitlijning.
  • StackPane (Node…. Nd): Er wordt een StackPane-lay-out gemaakt met een standaarduitlijning.

Eigendommen

Java StackPane heeft een eigenschapsuitlijning die wordt gebruikt voor de uitlijning van de kinderen binnen de hoogte en breedte van StackPane.

Methoden van StackPane

Java StackPane heeft verschillende methoden die verschillende functionaliteiten uitvoeren. Enkele van de meest gebruikte methoden worden hieronder uitgelegd:

  • clearConstraints (Nodechild): StackPane-beperkingen worden verwijderd uit het onderliggende knooppunt.
  • computeMinWidth (dubbele hoogte): de minimale breedte van het gebied wordt met deze methode berekend.
  • computeMinHeight (dubbele breedte): de minimale hoogte van het gebied wordt met deze methode berekend.
  • getAlignment (): de waarde van de eigenschap Alignment wordt geretourneerd.
  • setAlignment (Posvalue): de waarde van de eigenschap Alignment wordt ingesteld.
  • setAlignment (Node child, Posvalue): de waarde van de eigenschap Alignment wordt ingesteld voor het onderliggende item in het stapelvenster.
  • getMargin (Nodechild): waarde voor margebeperkingen wordt geretourneerd.
  • computePrefWidth (dubbele hoogte): de gewenste breedte voor het gebied dat nodig is voor de gegeven hoogte wordt berekend.
  • computePrefHeight (dubbele breedte): de gewenste hoogte voor het gebied dat nodig is voor de gegeven breedte wordt berekend.

Programma om JavaFX StackPane te implementeren

Laten we nu verschillende JavaFX-programma's bekijken om JavaFX StackPane te implementeren.

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

Output:

Een StackPane wordt gemaakt met twee knoppen. Zoals u ziet, bevindt een knop zich boven op de andere knop die voldoet aan de voorwaarde van StackPane.

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

Output:

Een StackPane wordt gemaakt met 1 cirkel, 1 bol en een tekst. Al deze liggen boven op anderen, waar de tekst bovenaan staat.

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

Uitgang:

Bij het uitvoeren van de code verschijnt een dialoogvenster met een selectievakje en een knop.

Als u op de knop Klik mij klikt, wordt een selectievakje vervangen door een knop.

Als u nogmaals op de knop klikt, wordt een label weergegeven.

Aanbevolen artikelen

Dit is een handleiding voor JavaFx StackPane. Hier bespreken we de constructors en eigenschappen, methoden van JavaFx StackPane met verschillende programma's. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Constructeurs van JavaFX Button
  2. Structuur van JavaFx-toepassing
  3. Top 5 JavaFX-indelingen
  4. Syntaxis gebruikt in JavaFX-label