JavaFX - 布局 AnchorPane

AnchorPane(锚窗格)允许将子节点的边缘锚定到与锚窗格边缘的偏移量。如果锚窗格设置了边框和/或填充,则偏移量将从这些插入的内边缘测量。

如果我们在应用程序中使用锚窗格,则其中的节点将锚定在与窗格的特定距离处。

javafx.scene.layout 中名为 AnchorPane 的类表示锚窗格。添加节点后,您需要从窗格的边界在所有方向(顶部、底部、右侧和左侧)设置锚点。要设置锚点,此类提供了四种方法,即 - setBottomAnchor()、setTopAnchor()、setLeftAnchor()、setRightAnchor()。对于这些方法,您需要传递一个表示锚点的双精度值。

示例

以下程序是锚点窗格布局的示例。在此,我们在锚点窗格中插入一个旋转圆柱体。同时,我们将其设置为从各个方向(顶部、左侧、右侧、底部)距离窗格 50 个单位。

将此代码保存在名为 AnchorPaneExample.java 的文件中。

import javafx.animation.RotateTransition; 
import javafx.collections.ObservableList; 
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane; 
import javafx.scene.paint.Color; 
import javafx.scene.paint.PhongMaterial; 
import javafx.scene.shape.Cylinder; 
import javafx.scene.transform.Rotate; 
import javafx.stage.Stage; 
import javafx.util.Duration;          

public class AnchorPaneExample extends Application { 
   @Override 
   public void start(Stage stage) {
        //绘制圆柱体
        Cylinder cylinder = new Cylinder();
        
        //设置圆柱体的属性
        cylinder.setHeight(180.0f);
        cylinder.setRadius(100.0f);
        
        //准备漫反射颜色类型的 phong 材质
        PhongMaterialmaterial = new PhongMaterial();
        material.setDiffuseColor(Color.BLANCHEDALMOND);
        
        //将漫反射颜色材质设置为 Cylinder5
        cylinder.setMaterial(material);
        
        //设置圆柱体的旋转过渡
        RotateTransition rotateTransition = new RotateTransition();
        
        //设置过渡的持续时间
        rotateTransition.setDuration(Duration.millis(1000));
        
        //设置过渡的节点
        rotateTransition.setNode(cylinder);
        
        //设置旋转轴
        rotateTransition.setAxis(Rotate.X_AXIS);
        
        //设置旋转角度
        rotateTransition.setByAngle(360);
        
        //设置过渡的循环次数
        rotateTransition.setCycleCount(RotateTransition.INDEFINITE);
        
        //将自动反转值设置为 false
        rotateTransition.setAutoReverse(false);
        
        //播放动画
        rotateTransition.play();
        
        //创建锚点窗格
        AnchorPane anchorPane = new AnchorPane();
        
        //将锚点设置为圆柱体
        AnchorPane.setTopAnchor(cylinder, 50.0);
        AnchorPane.setLeftAnchor(cylinder, 50.0);
        AnchorPane.setRightAnchor(cylinder, 50.0);
        AnchorPane.setBottomAnchor(cylinder, 50.0);
        
        //检索 Anchor Pane 的可观察列表
        ObservableList list = anchorPane.getChildren();
        
        //将圆柱体添加到窗格
        list.addAll(cylinder);
        
        //创建场景对象
        Scene scene = new Scene(anchorPane);
        
        //将标题设置为舞台(Stage)
        stage.setTitle("Anchor Pane 示例");
        
        //将场景添加到舞台(Stage)
        stage.setScene(scene);
        
        //显示舞台(Stage)的内容
        stage.show();
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
}

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

javac AnchorPaneExample.java 
java AnchorPaneExample

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

AnchorPane

javafx_layout_panes.html