Introduktion till JavaFX StackPane

Java StackPane är en behållare som lägger ut sina barn staplade till andra. Innehållsområdet fylls genom att ändra storlek på barnen och om barnnoderna inte kan ändra storleken kommer Pos.CENTER att användas, som är standardjusteringsegenskapen. Normalt kan barnnoder inte ändra storlek när den maximala storleken förhindrade det. Java Stack Pane kan inställas från klassen javafx.scene.layout.StackPane. När stoppningen är inställd kommer barnnoder att läggas ut endast inom insatserna. Syntax, konstruktörer och flera andra aspekter av JavaFX StackPane kommer att diskuteras i följande avsnitt.

Syntax:

I JavaFX kan StackPane skapas som visas nedan.

StackPane sp = new StackPane();

Se alltid till att klassen javafx.scene.layout.StackPane importeras i programmet innan koden körs.

Konstruktörer och egenskaper hos JavaFX StackPane

Nedan har vi diskuterat konstruktörerna och egenskaperna hos javafx stackpane:

konstruktörer

Det finns två konstruktörer för JavaFX StackPane. Dom är:

  • StackPane (): En StackPane-layout skapas med en standardjustering. I JavaFX StackPane betraktas CENTER som en standardjustering.
  • StackPane (Node…. Nd): En StackPane-layout skapas med en standardjustering.

Egenskaper

Java StackPane har en egenskapsjustering som används för inriktning av barn som ligger inom höjden och bredden på StackPane.

Metoder för StackPane

Java StackPane har flera metoder som utför olika funktioner. Några av de vanligtvis använda metoderna förklaras nedan:

  • clearConstraints (Nodechild): StackPane-begränsningar kommer att tas bort från barnnoden.
  • computeMinWidth (dubbel höjd): Regionens minsta bredd kommer att beräknas med den här metoden.
  • computeMinHeight (dubbel bredd): Minimihöjden för regionen kommer att beräknas med den här metoden.
  • getAlignment (): Justeringsegenskapens värde kommer att returneras.
  • setAlignment (Posvalue): Justeringsegenskapens värde kommer att ställas in.
  • setAlignment (Node child, Posvalue): Justeringsegenskapens värde kommer att ställas in för det barn som finns i stapelfönstret.
  • getMargin (Nodechild): Marginalbegränsningsvärdet kommer att returneras.
  • computePrefWidth (dubbel höjd): Föredragen bredd för det område som behövs för den givna höjden kommer att beräknas.
  • computePrefHeight (dubbel bredd): Föredragen höjd för det område som behövs för den givna bredden kommer att beräknas.

Program för att implementera JavaFX StackPane

Låt oss nu se olika JavaFX-program för att implementera JavaFX StackPane.

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

Produktion:

En StackPane skapas med två knappar. Som du kan se, är en knapp överst på den andra knappen som uppfyller villkoret för 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);
)
)

Produktion:

En StackPane skapas med 1 cirkel, 1 sfär och en text. Alla dessa ligger ovanpå andra där texten är överst.

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

Utgång:

När koden körs visas en dialogruta med en kryssruta och knapp.

När du klickar på knappen Klicka på mig kommer en kryssruta att ersättas med en knapp.

Om du klickar på knappen igen visas en etikett.

Rekommenderade artiklar

Detta är en guide till JavaFx StackPane. Här diskuterar vi konstruktörer och egenskaper, metoder för JavaFx StackPane med olika program. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Konstruktörer av JavaFX-knappen
  2. Struktur för JavaFx-applikation
  3. Topp 5 JavaFX-layouter
  4. Syntax används i JavaFX-etikett

Kategori: