JavaFX - 布局 Stackpane

  • 简述

    如果我们使用堆栈窗格,节点会排列在另一个顶部,就像在堆栈中一样。首先添加的节点放置在堆栈的底部,下一个节点放置在堆栈的顶部。
    类名为 StackPane 包裹的 javafx.scene.layout代表 StackPane。此类包含一个名为对齐的属性。此属性表示堆栈窗格内节点的对齐方式。
    除了这些,这个类还提供了一个名为 setMargin(). 此方法用于为堆栈窗格内的节点设置边距。
  • 例子

    下面的程序是一个例子 StackPane布局。在这里,我们以相同的顺序插入一个圆、球体和一个文本。
    将此代码保存在名称为的文件中 StackPaneExample.java.
    
    import javafx.application.Application; 
    import javafx.collections.ObservableList; 
    import javafx.geometry.Insets; 
    import javafx.scene.Scene; 
    import javafx.scene.layout.StackPane; 
    import javafx.scene.paint.Color; 
    import javafx.scene.shape.Circle; 
    import javafx.scene.shape.Sphere;
     
    import javafx.scene.text.Font; 
    import javafx.scene.text.FontWeight; 
    import javafx.scene.text.Text; 
    import javafx.stage.Stage; 
             
    public class StackPaneExample extends Application { 
       @Override 
       public void start(Stage stage) {                     
          //Drawing a Circle 
          Circle circle = new Circle(300, 135, 100); 
          circle.setFill(Color.DARKSLATEBLUE); 
          circle.setStroke(Color.BLACK);
          
          //Drawing Sphere 
          Sphere sphere = new Sphere(50); 
           
          //Creating a text 
          Text text = new Text("Hello how are you"); 
          
          //Setting the font of the text 
          text.setFont(Font.font(null, FontWeight.BOLD, 15));     
          
          //Setting the color of the text 
          text.setFill(Color.CRIMSON); 
          
          //setting the position of the text 
          text.setX(20); 
          text.setY(50);       
           
          //Creating a Stackpane 
          StackPane stackPane = new StackPane(); 
          
          //Setting the margin for the circle 
          stackPane.setMargin(circle, 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(circle, sphere, text); 
            
          //Creating a scene object 
          Scene scene = new Scene(stackPane);  
          
          //Setting title to the Stage 
          stage.setTitle("Stack Pane Example"); 
             
          //Adding scene to the stage 
          stage.setScene(scene); 
             
          //Displaying the contents of the stage 
          stage.show();  
       }
       public static void main(String args[]){ 
          launch(args); 
       } 
    } 
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac StackPaneExample.java 
    java StackPaneExample
    
    执行时,上述程序会生成一个 JavaFX 窗口,如下所示。
    堆栈面板