Введение в JavaFX StackPane

Java StackPane - это контейнер, который размещает своих дочерних элементов в стеке для других. Область содержимого заполняется путем изменения размера дочерних узлов, и если дочерние узлы не могут изменить размер, будет использоваться Pos.CENTER, который является свойством выравнивания по умолчанию. Обычно дочерние узлы не могут изменить размер, когда максимальный размер препятствует этому. Панель стека Java может быть создана из класса javafx.scene.layout.StackPane. Когда заполнение установлено, дочерние узлы будут размещены только во вставках. Синтаксис, конструкторы и некоторые другие аспекты JavaFX StackPane будут обсуждаться в следующих разделах.

Синтаксис:

В JavaFX StackPane может быть создан, как показано ниже.

StackPane sp = new StackPane();

Всегда проверяйте, что класс javafx.scene.layout.StackPane импортирован в программу перед выполнением кода.

Конструкторы и свойства JavaFX StackPane

Ниже мы обсудили конструкторы и свойства стека панели javafx:

Конструкторы

Есть два конструктора для JavaFX StackPane. Они есть:

  • StackPane (): макет StackPane будет создан с выравниванием по умолчанию. В JavaFX StackPane CENTER считается выравниванием по умолчанию.
  • StackPane (Node…. Nd ): будет создан макет StackPane с выравниванием по умолчанию.

свойства

Java StackPane имеет свойство выравнивания, которое используется для выравнивания дочерних элементов, которое находится в пределах высоты и ширины StackPane.

Методы StackPane

Java StackPane имеет несколько методов, которые выполняют различные функции. Некоторые из обычно используемых методов объяснены ниже:

  • clearConstraints (Nodechild): ограничения StackPane будут удалены из дочернего узла.
  • computeMinWidth (double height): минимальная ширина области будет вычислена с использованием этого метода.
  • computeMinHeight (double width): минимальная высота области будет вычислена с использованием этого метода.
  • getAlignment (): будет возвращено значение свойства выравнивания.
  • setAlignment (Posvalue): будет установлено значение свойства Alignment.
  • setAlignment (Node child, Posvalue): значение свойства Alignment будет установлено для дочернего элемента, который присутствует в области стека.
  • getMargin (Nodechild): будет возвращено значение ограничения поля.
  • computePrefWidth (double height): будет вычислена предпочтительная ширина для области, которая необходима для данной высоты.
  • computePrefHeight (double width): будет вычислена предпочтительная высота для области, которая необходима для данной ширины.

Программа для реализации JavaFX StackPane

Теперь давайте рассмотрим различные программы JavaFX для реализации JavaFX StackPane.

Программа № 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);
)
)

Выход:

StackPane создается с двумя кнопками. Как видите, одна кнопка находится сверху другой кнопки, что удовлетворяет условию StackPane.

Программа № 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);
)
)

Выход:

StackPane создается с 1 кружком, 1 сферой и текстом. Все они лежат поверх других, где текст находится сверху.

Программа № 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);
)
)

Выход :

При выполнении кода появляется диалоговое окно с флажком и кнопкой.

При нажатии кнопки «Нажми меня» флажок будет заменен кнопкой.

Если вы нажмете кнопку еще раз, появится метка.

Рекомендуемые статьи

Это руководство по JavaFx StackPane. Здесь мы обсуждаем конструкторы и свойства, методы JavaFx StackPane с различными программами. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Конструкторы JavaFX Button
  2. Структура приложения JavaFx
  3. 5 лучших макетов JavaFX
  4. Синтаксис, используемый в метке JavaFX