- 将子节点锚定到容器的边界上,指定子节点相对于 AnchorPane 的四个边界(上、下、左、右)的距离
- 适合宽高固定的一些表单
- 如果允许最大化,拖动大小,需要自己计算子节点的定位
常用属性
padding
容器边缘与其子节点之间的距离
anchorPane.setPadding(new Insets(5, 10, 5, 10));
实现方式
Java
public static AnchorPane demo1() {
// 创建AnchorPane
AnchorPane anchorPane = new AnchorPane();
// 内边距
anchorPane.setPadding(new Insets(10, 10, 10, 10));
// 用户名
Label label1 = new Label("用户名:");
AnchorPane.setTopAnchor(label1, 30D);
AnchorPane.setLeftAnchor(label1, 90D);
anchorPane.getChildren().add(label1);
TextField textField1 = new TextField();
AnchorPane.setTopAnchor(textField1, 30D);
AnchorPane.setLeftAnchor(textField1, 180D);
anchorPane.getChildren().add(textField1);
// 密码
Label label2 = new Label("密码:");
AnchorPane.setTopAnchor(label2, 70D);
AnchorPane.setLeftAnchor(label2, 90D);
anchorPane.getChildren().add(label2);
// 密码
PasswordField passwordField = new PasswordField();
AnchorPane.setTopAnchor(passwordField, 70D);
AnchorPane.setLeftAnchor(passwordField, 180D);
anchorPane.getChildren().add(passwordField);
return anchorPane;
}
fxml
<AnchorPane prefHeight="400" prefWidth="600" xmlns="http://javafx.com/javafx/17.0.2-ea"
xmlns:fx="http://javafx.com/fxml/1">
<padding>
<Insets left="10" top="5" right="10" bottom="5"/>
</padding>
<children>
<Label layoutX="90" layoutY="30" text="用户名:"/>
<TextField layoutX="180" layoutY="30"/>
<Label layoutX="90" layoutY="70" text="密码:"/>
<PasswordField layoutX="180" layoutY="70"/>
</children>
</AnchorPane>