Introducere în JavaFX StackPane

Java StackPane este un container care își expune copiii stocați la alții. Zona de conținut este completată prin redimensionarea copiilor și dacă nodurile copiilor nu pot să redimensioneze, se va utiliza Pos.CENTER, care este proprietatea de aliniere implicită. În mod normal, nodurile copil nu pot redimensiona atunci când dimensiunea maximă a împiedicat-o. Java Stack Pane poate fi inițiat din clasa javafx.scene.layout.StackPane. Când umplerea este setată, nodurile copil vor fi aranjate numai în interior. Sintaxa, constructorii și alte câteva aspecte ale JavaFX StackPane vor fi discutate în secțiunile următoare.

Sintaxă:

În JavaFX, StackPane poate fi creat așa cum se arată mai jos.

StackPane sp = new StackPane();

Asigurați-vă întotdeauna că clasa javafx.scene.layout.StackPane este importată în program înainte de a executa codul.

Constructori și proprietăți ale JavaFX StackPane

Mai jos am discutat despre constructorii și proprietățile stăpânului javafx:

constructorilor

Există doi constructori pentru JavaFX StackPane. Sunt:

  • StackPane (): Un layout StackPane va fi creat cu o aliniere implicită. În JavaFX StackPane, CENTRUL este considerat ca o aliniere implicită.
  • StackPane (Nod … nd): Un layout StackPane va fi creat cu o aliniere implicită.

Proprietăți

Java StackPane are o aliniere a proprietății care este utilizată pentru alinierea copiilor care se află la înălțimea și lățimea StackPane.

Metode de StackPane

Java StackPane are mai multe metode care îndeplinesc funcționalități diferite. Unele dintre metodele utilizate în mod obișnuit sunt explicate mai jos:

  • clearConstraints (Nodechild): restricțiile StackPane vor fi eliminate din nodul copil.
  • computeMinWidth (înălțime dublă): Lățimea minimă a regiunii va fi calculată folosind această metodă.
  • computeMinHeight (lățime dublă): Înălțimea minimă a regiunii va fi calculată folosind această metodă.
  • getAlignment (): Valoarea proprietății de aliniere va fi returnată.
  • setAlignment (Posvalue): Valoarea proprietății de aliniere va fi setată.
  • setAlignment (Node copil, Posvalue): Valoarea proprietății de aliniere va fi setată pentru copilul care este prezent în stivă.
  • getMargin (Nodechild): Valoarea restricțiilor de marjă va fi returnată.
  • computePrefWidth (înălțime dublă): Se va calcula lățimea preferată pentru regiunea necesară pentru înălțimea dată.
  • computePrefHeight (lățime dublă): Se va calcula înălțimea preferată pentru regiunea care este necesară pentru lățimea dată.

Program pentru implementarea JavaFX StackPane

Acum, să vedem diferite programe JavaFX pentru a implementa JavaFX StackPane.

Programul nr. 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);
)
)

ieşire:

Un StackPane este creat cu două butoane. După cum puteți vedea, un buton se află în partea de sus a celuilalt buton care satisface condiția StackPane.

Programul nr. 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);
)
)

ieşire:

Un StackPane este creat cu 1 cerc, 1 sferă și un text. Toate acestea sunt situate deasupra altora, unde textul este pe partea de sus.

Programul nr. 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);
)
)

Rezultat:

La executarea codului, apare o casetă de dialog cu caseta de selectare și buton.

La apăsarea butonului Faceți clic pe mine, o casetă de selectare va fi înlocuită cu un buton.

Dacă faceți clic din nou pe buton, va fi afișată o etichetă.

Articole recomandate

Acesta este un ghid pentru JavaFx StackPane. Aici discutăm constructorii și proprietățile, metodele JavaFx StackPane cu diferite programe. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Constructorii butonului JavaFX
  2. Structura aplicației JavaFx
  3. Top 5 machete JavaFX
  4. Sintaxa folosită în eticheta JavaFX