Úvod do JavaFX StackPane

Java StackPane je kontejner, který stanoví své děti naskládané ostatním. Oblast obsahu je vyplněna změnou velikosti dětí a pokud podřízené uzly nemohou změnit velikost, bude použita pos.CENTER, což je výchozí vlastnost zarovnání. Normálně podřízené uzly nejsou schopné změnit velikost, pokud tomu bránila maximální velikost. Podokno Java Stack lze vytvořit z třídy javafx.scene.layout.StackPane. Když je výplň nastavena, podřízené uzly budou rozloženy pouze uvnitř vložek. Syntaxe, konstruktéři a několik dalších aspektů JavaFX StackPane budou popsány v následujících částech.

Syntax:

V JavaFX lze StackPane vytvořit, jak je ukázáno níže.

StackPane sp = new StackPane();

Před spuštěním kódu vždy zkontrolujte, zda je do programu importována třída javafx.scene.layout.StackPane.

Konstruktory a vlastnosti JavaFX StackPane

Níže jsme diskutovali konstruktéry a vlastnosti javafx stackpane:

Konstruktory

Existují dva konstruktory pro JavaFX StackPane. Oni jsou:

  • StackPane (): Rozložení StackPane bude vytvořeno s výchozím zarovnáním. V JavaFX StackPane je CENTER považováno za výchozí zarovnání.
  • StackPane (Node…. Nd): Rozložení StackPane bude vytvořeno s výchozím zarovnáním.

Vlastnosti

Java StackPane má zarovnání vlastností, které se používá pro zarovnání dětí, které je v rámci výšky a šířky StackPane.

Metody StackPane

Java StackPane má několik metod, které provádějí různé funkce. Některé z běžně používaných metod jsou vysvětleny níže:

  • clearConstraints (Nodechild): StackPane omezení budou odstraněna z podřízeného uzlu.
  • computeMinWidth (dvojitá výška): Minimální šířka oblasti bude vypočítána pomocí této metody.
  • computeMinHeight (dvojitá šířka): Minimální výška oblasti bude vypočítána pomocí této metody.
  • getAlignment (): Hodnota vlastnosti Zarovnání bude vrácena.
  • setAlignment (Posvalue): Bude nastavena hodnota vlastnosti Zarovnání.
  • setAlignment (Node child, Posvalue): Hodnota vlastnosti Zarovnání bude nastavena pro podřízené, které je přítomné v zásobníku.
  • getMargin (Nodechild): Hodnota omezení marže bude vrácena.
  • computePrefWidth (dvojitá výška): Bude vypočítána preferovaná šířka pro oblast, která je pro danou výšku potřebná.
  • computePrefHeight (dvojitá šířka): Bude vypočtena preferovaná výška pro oblast, která je pro danou šířku potřebná.

Program implementace JavaFX StackPane

Nyní se podívejme na různé programy JavaFX pro implementaci JavaFX StackPane.

Program č. 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);
)
)

Výstup:

StackPane je vytvořen pomocí dvou tlačítek. Jak vidíte, jedno tlačítko je nahoře na druhém tlačítku, které splňuje podmínky StackPane.

Program č. 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);
)
)

Výstup:

StackPane je vytvořen s 1 kruhem, 1 koulí a textem. To vše leží nad ostatními, kde je text nahoře.

Program č. 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);
)
)

Výstup :

Po spuštění kódu se zobrazí dialogové okno se zaškrtávacím políčkem a tlačítkem.

Po kliknutí na tlačítko Click me bude zaškrtávací políčko nahrazeno tlačítkem.

Pokud znovu kliknete na tlačítko, zobrazí se štítek.

Doporučené články

Toto je průvodce JavaFx StackPane. Zde diskutujeme konstruktéry a vlastnosti, metody JavaFx StackPane s různými programy. Další informace naleznete také v dalších navrhovaných článcích -

  1. Konstruktory tlačítka JavaFX
  2. Struktura aplikace JavaFx
  3. Top 5 rozložení JavaFX
  4. Syntaxe použitá v JavaFX Label

Kategorie: