StackPane layout place UI components in a single stack. The z-order of the children is defined by the order of the children list with the 0th child being the bottom and last child on top. If a border and/or padding have been set, the children will be layed out within those insets.
Example
Let’s overlay an ellipse on Rectangle using StackPane.
Find the below working application.
stackPaneDemo.fxml
<?import javafx.scene.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<StackPane xmlns:fx="http://javafx.com/fxml" fx:controller="com.sample.app.layout.controller.StackPaneController"
fx:id="stackPane1">
<Rectangle fx:id="rectangle1"
fill="lightsalmon"
width="300" height="200"
x="50" y = "50"
/>
<Ellipse fx:id="circle1"
centerX="175" centerY="125"
radiusX ="150" radiusY="100"
fill="lightblue"
/>
</StackPane>
StackPaneController.java
package com.sample.app.layout.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
public class StackPaneController implements Initializable {
@FXML
private StackPane stackPane1;
@Override
public void initialize(URL location, ResourceBundle resources) {
DropShadow dropShadow = new DropShadow();
dropShadow.setOffsetX(5);
dropShadow.setOffsetY(5);
dropShadow.setColor(Color.GRAY);
stackPane1.setEffect(dropShadow);
stackPane1.setAlignment(Pos.TOP_CENTER);
stackPane1.setPadding(new Insets(20, 20, 20, 20));
}
}
StackPaneDemo.java
package com.sample.app.layout;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class StackPaneDemo extends Application {
private static final String FXML_FILE = "/stackPaneDemo.fxml";
private static final String STAGE_TITLE = "StackPane Demo";
public static void main(String args[]) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = (Parent) FXMLLoader.load(this.getClass().getResource(FXML_FILE));
Scene scene = new Scene(root, 500, 400, Color.WHITE);
primaryStage.setTitle(STAGE_TITLE);
primaryStage.setScene(scene);
primaryStage.show();
}
}
package com.sample.app.layout;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class StackPaneDemo extends Application {
private static final String FXML_FILE = "/stackPaneDemo.fxml";
private static final String STAGE_TITLE = "StackPane Demo";
public static void main(String args[]) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = (Parent) FXMLLoader.load(this.getClass().getResource(FXML_FILE));
Scene scene = new Scene(root, 500, 400, Color.WHITE);
primaryStage.setTitle(STAGE_TITLE);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Output
No comments:
Post a Comment