Вступ до 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

Нижче ми розглянули конструктори та властивості stackpane javafx:

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

Для JavaFX StackPane є два конструктори. Вони є:

  • StackPane (): Буде створено макет StackPane з вирівнюванням за замовчуванням. У JavaFX StackPane CENTER вважається вирівнюванням за замовчуванням.
  • StackPane (Node… .dd): буде створено макет StackPane з вирівнюванням за замовчуванням.

Властивості

Java StackPane має вирівнювання властивостей, яке використовується для вирівнювання дітей, що знаходиться у межах висоти та ширини StackPane.

Методи StackPane

Java StackPane має кілька методів, які виконують різні функції. Деякі з найбільш часто використовуваних методів пояснюються нижче:

  • clearConstraints (Nodechild): обмеження StackPane будуть видалені з дочірнього вузла.
  • computeMinWidth (подвійна висота): мінімальна ширина області буде обчислена за допомогою цього методу.
  • computeMinHeight (подвійна ширина): мінімальна висота області буде обчислена за допомогою цього методу.
  • getAlignment (): значення властивості вирівнювання буде повернуто.
  • setAlignment (Posvalue): буде встановлено значення властивості вирівнювання.
  • setAlignment (Node child, Posvalue): значення властивості вирівнювання буде встановлено для дитини, яка присутня в стекпані.
  • getMargin (Nodechild): значення обмежень поля буде повернуто.
  • computePrefWidth (подвійна висота): бажана ширина для області, яка потрібна для даної висоти, буде обчислена.
  • computePrefHeight (подвійна ширина): бажана висота для області, яка потрібна для заданої ширини, буде обчислена.

Програма для впровадження 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
  2. Структура додатку JavaFx
  3. Топ 5 макетів JavaFX
  4. Синтаксис, що використовується в мітці JavaFX