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 窗口,如下所示。