JavaFX - 布局 Stackpane

如果我们使用 Stack Pane,节点会排列在另一个节点之上,就像在堆栈中一样。首先添加的节点放在堆栈的底部,下一个节点放在其顶部。

javafx.scene.layout 中名为 StackPane 的类表示 StackPane。此类包含一个名为 alignment 的属性。此属性表示堆栈窗格内节点的对齐方式。

除此之外,此类还提供一个名为 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) {
        //绘制一个圆圈
        Circle circle = new Circle(300, 135, 100);
        circle.setFill(Color.DARKSLATEBLUE);
        circle.setStroke(Color.BLACK);
        
        //绘制球体
        Sphere sphere = new Sphere(50);
        
        //创建文本
        Text text = new Text("Hello how are you");
        
        //设置文本的字体
        text.setFont(Font.font(null, FontWeight.BOLD, 15));
        
        //设置文本的颜色
        text.setFill(Color.CRIMSON);
        
        //设置文本的位置
        text.setX(20);
        text.setY(50);
        
        //创建 Stackpane
        StackPane stackPane = new StackPane();
        
        //设置圆的边距
        stackPane.setMargin(circle, new Insets(50, 50, 50, 50));
        
        //检索 Stack Pane 的可观察列表
        ObservableList list = stackPane.getChildren();
        
        //将所有节点添加到窗格
        list.addAll(circle, sphere, text);
        
        //创建场景对象
        Scene scene = new Scene(stackPane);
        
        //设置舞台(Stage)标题
        stage.setTitle("Stack Pane 示例");
        
        //将场景添加到舞台(Stage)
        stage.setScene(scene);
        
        //显示舞台(Stage)内容
        stage.show();
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
} 

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac StackPaneExample.java 
java StackPaneExample

执行时,上述程序将生成一个 JavaFX 窗口,如下所示。

StackPane

javafx_layout_panes.html