How to create a StackPane using JavaFX?



Once you create all the required nodes for your application you can arrange them using a layout. Where a layout is a process of calculating the position of objects in the given space. JavaFX provides various layouts in the javafx.scene.layout package.

Stack Pane

In this layout, the nodes are arranged as a stack from bottom to top (one upon another). You can create a stack pane in your application by instantiating the javafx.scene.layout.StackPane class.

  • You can set the alignment of the nodes in this pane using the setAlignment() method.

  • In the same you can set a margin for a node within the pane, using the setMatgin() method.

To add nodes to this pane you can either pass them as arguments of the constructor or, add them to the observable list of the pane as −

getChildren().addAll();

Example

import javafx.application.Application; import javafx.collections.ObservableList; import javafx.geometry.Insets; import javafx.scene.PerspectiveCamera; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.CullFace; import javafx.scene.shape.DrawMode; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.Sphere; public class StackedPaneExample extends Application {    public void start(Stage stage) {       //Drawing sphere1       Sphere sphere1 = new Sphere(80);       sphere1.setDrawMode(DrawMode.LINE);       //Drawing sphere2       Sphere sphere2 = new Sphere();       //Setting the properties of the Box(cube)       sphere2.setRadius(120.0);       //Setting other properties       sphere2.setCullFace(CullFace.BACK);       sphere2.setDrawMode(DrawMode.FILL);       PhongMaterial material = new PhongMaterial();       material.setDiffuseColor(Color.BROWN);       sphere2.setMaterial(material);       //Setting the perspective camera       PerspectiveCamera cam = new PerspectiveCamera();       cam.setTranslateX(-50);       cam.setTranslateY(25);       cam.setTranslateZ(0);       //Drawing the shape       MoveTo moveTo = new MoveTo(208, 71);       LineTo line1 = new LineTo(421, 161);       LineTo line2 = new LineTo(226,232);       LineTo line3 = new LineTo(332,52);       LineTo line4 = new LineTo(369, 250);       LineTo line5 = new LineTo(208, 71);       //Creating a Path       Path path = new Path(moveTo, line1, line2, line3, line4, line5);       path.setFill(Color.DARKCYAN);       path.setStrokeWidth(8.0);       path.setStroke(Color.DARKSLATEGREY);       //.setMaterial(material);       //Creating a stack pane       StackPane stackPane = new StackPane();       //Setting the margin for the circle       stackPane.setMargin(sphere2, new Insets(50, 50, 50, 50));       //Retrieving the observable list of the Stack Pane       ObservableList list = stackPane.getChildren();       //Adding all the nodes to the pane       list.addAll(sphere2, sphere1, path);       //Setting the Scene       Scene scene = new Scene(stackPane, 595, 300);       scene.setCamera(cam);       stage.setTitle("Stack Pane");       stage.setScene(scene);       stage.show();    }    public static void main(String args[]){       launch(args);    } }

Output

Updated on: 2020-05-19T13:18:05+05:30

255 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements