JavaFX - 定位Anchorpane



AnchorPane 允许子节点的边缘与 AnchorPane 边缘的偏移量对齐。如果 AnchorPane 设置了边框和/或填充,则偏移量将从这些内边距的内边缘测量。

如果我们在应用程序中使用 AnchorPane,其中的节点将与面板保持特定距离。

名为AnchorPane的类,位于包javafx.scene.layout中,表示 AnchorPane。添加节点后,需要从面板的所有方向(顶部、底部、右侧和左侧)对其设置锚点。为了设置锚点,此类提供了四种方法,分别是 – setBottomAnchor(),setTopAnchor(),setLeftAnchor(),setRightAnchor()。对于这些方法,需要传递一个表示锚点的双精度值。

示例

以下程序是 AnchorPane 布局的示例。在这个例子中,我们在 AnchorPane 中插入一个旋转的圆柱体。同时,我们将其从面板的所有方向(顶部、左侧、右侧、底部)设置在 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) {                     
      //Drawing a Cylinder 
      Cylinder cylinder = new Cylinder();        
      
      //Setting the properties of the Cylinder 
      cylinder.setHeight(180.0f); 
      cylinder.setRadius(100.0f);     
      
      //Preparing the phong material of type diffuse color 
      PhongMaterial material = new PhongMaterial();  
      material.setDiffuseColor(Color.BLANCHEDALMOND); 
      
      //Setting the diffuse color material to Cylinder5 
      cylinder.setMaterial(material);  
       
      //Setting rotation transition for the cylinder 
      RotateTransition rotateTransition = new RotateTransition(); 
      
      //Setting the duration for the transition 
      rotateTransition.setDuration(Duration.millis(1000)); 
      
      //Setting the node for the transition 
      rotateTransition.setNode(cylinder);       
      
      //Setting the axis of the rotation 
      rotateTransition.setAxis(Rotate.X_AXIS);  
      
      //Setting the angle of the rotation 
      rotateTransition.setByAngle(360);
      
      //Setting the cycle count for the transition 
      rotateTransition.setCycleCount(RotateTransition.INDEFINITE); 
      
      //Setting auto reverse value to false 
      rotateTransition.setAutoReverse(false); 
      
      //playing the animation 
      rotateTransition.play(); 
      
      //Creating an Anchor Pane  
      AnchorPane anchorPane = new AnchorPane();  
       
      //Setting the anchor to the cylinder      
      AnchorPane.setTopAnchor(cylinder, 50.0); 
      AnchorPane.setLeftAnchor(cylinder, 50.0); 
      AnchorPane.setRightAnchor(cylinder, 50.0); 
      AnchorPane.setBottomAnchor(cylinder, 50.0); 
       
      //Retrieving the observable list of the Anchor Pane 
      ObservableList list = anchorPane.getChildren();  
      
      //Adding cylinder to the pane 
      list.addAll(cylinder);        
         
      //Creating a scene object 
      Scene scene = new Scene(anchorPane);  
      
      //Setting title to the Stage 
      stage.setTitle("Anchor 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 AnchorPaneExample.java 
java AnchorPaneExample

执行后,上述程序将生成如下所示的 JavaFX 窗口。

AnchorPane
javafx_layout_panes.htm
广告