Introduction à JavaFX StackPane

Java StackPane est un conteneur qui présente ses enfants empilés sur d'autres. La zone de contenu est remplie en redimensionnant les enfants et si les nœuds enfants ne sont pas capables de redimensionner, Pos.CENTER sera utilisé, ce qui est la propriété d'alignement par défaut. Normalement, les nœuds enfants ne sont pas en mesure de redimensionner lorsque la taille maximale l'a empêché. Le volet de pile Java peut être instancié à partir de la classe javafx.scene.layout.StackPane. Lorsque le remplissage est défini, les nœuds enfants sont disposés uniquement dans les encarts. La syntaxe, les constructeurs et plusieurs autres aspects de JavaFX StackPane seront abordés dans les sections suivantes.

Syntaxe:

Dans JavaFX, StackPane peut être créé comme indiqué ci-dessous.

StackPane sp = new StackPane();

Assurez-vous toujours que la classe javafx.scene.layout.StackPane est importée dans le programme avant d'exécuter le code.

Constructeurs et propriétés de JavaFX StackPane

Ci-dessous, nous avons discuté des constructeurs et des propriétés du stackpane javafx:

Constructeurs

Il existe deux constructeurs pour JavaFX StackPane. Elles sont:

  • StackPane (): une disposition StackPane sera créée avec un alignement par défaut. Dans JavaFX StackPane, CENTER est considéré comme un alignement par défaut.
  • StackPane (Node…. Nd): Une disposition StackPane sera créée avec un alignement par défaut.

Propriétés

Java StackPane a un alignement de propriété qui est utilisé pour l'alignement des enfants à l'intérieur de la hauteur et de la largeur de StackPane.

Méthodes de StackPane

Java StackPane possède plusieurs méthodes qui exécutent différentes fonctionnalités. Certaines des méthodes couramment utilisées sont expliquées ci-dessous:

  • clearConstraints (Nodechild): les contraintes StackPane seront supprimées du nœud enfant.
  • computeMinWidth (double hauteur): la largeur minimale de la région sera calculée à l'aide de cette méthode.
  • computeMinHeight (double largeur): la hauteur minimale de la région sera calculée à l'aide de cette méthode.
  • getAlignment (): la valeur de la propriété d'alignement sera retournée.
  • setAlignment (Posvalue): la valeur de la propriété d'alignement sera définie.
  • setAlignment (Node child, Posvalue): la valeur de la propriété d'alignement sera définie pour l'enfant présent dans le volet de pile.
  • getMargin (Nodechild): La valeur des contraintes de marge sera retournée.
  • computePrefWidth (double hauteur): la largeur préférée pour la région qui est nécessaire pour la hauteur donnée sera calculée.
  • computePrefHeight (double largeur): la hauteur préférée pour la région qui est nécessaire pour la largeur donnée sera calculée.

Programme pour implémenter JavaFX StackPane

Voyons maintenant différents programmes JavaFX pour implémenter JavaFX StackPane.

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

Production:

Un StackPane est créé avec deux boutons. Comme vous pouvez le voir, un bouton est au-dessus de l'autre bouton qui satisfait la condition de StackPane.

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

Production:

Un StackPane est créé avec 1 cercle, 1 sphère et un texte. Tout cela se trouve au-dessus des autres où le texte est au sommet.

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

Production :

Lors de l'exécution du code, une boîte de dialogue avec une case à cocher et un bouton apparaît.

En cliquant sur le bouton Click me, une case à cocher sera remplacée par un bouton.

Si vous cliquez à nouveau sur le bouton, une étiquette s'affiche.

Articles recommandés

Ceci est un guide de JavaFx StackPane. Ici, nous discutons des constructeurs et des propriétés, des méthodes de JavaFx StackPane avec différents programmes. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Constructeurs du bouton JavaFX
  2. Structure de l'application JavaFx
  3. Top 5 des mises en page JavaFX
  4. Syntaxe utilisée dans JavaFX Label