AnchorPane 布局(绝对布局)

  • 创建AnchorPane 布局AnchorPane ap = new AnchorPane();

  • 设置样式ap.setStyle("-fx-background-color: red;");

  • 设置鼠标点击事件

    ap.setOnMouseClicked(new EventHandler<MouseEvent>() {  
        @Override  
        public void handle(MouseEvent event) {  
            System.out.println("click");  
        }  
    });
    
  • 添加子组件和设置子组件位置

    Button button = new Button("btn0");  
    Button button1 = new Button("btn1");  
    // 设置内边距,单独设置无效,需配合下面四行中的任意几行才有效果
    ap.setPadding(new Insets(10, 10, 10, 10));
    // 管理子组件的位置,当父组件与子组件的设置冲突时,子组件设置无效
    AnchorPane.setTopAnchor(button, 10.0);  
    AnchorPane.setLeftAnchor(button, 10.0);  
    AnchorPane.setBottomAnchor(button, 10.0);  
    AnchorPane.setRightAnchor(button, 10.0);  
    // 无效设置  
    button.setLayoutX(20);  
    button.setLayoutY(20);  
    ap.getChildren().addAll(button, button1);
    

  • 添加group布局

    Button button = new Button("btn0");  
    Button button1 = new Button("btn1");  
    Group group1 = new Group();  
    group.getChildren().add(button);  
    group1.getChildren().add(button1);  
    ap.getChildren().addAll(group, group1);  
    AnchorPane.setTopAnchor(group, 10.0);  
    AnchorPane.setBottomAnchor(group1, 10.0);
    

  • 添加AnchorPane布局

    // 创建两个AnchorPane布局
    AnchorPane anchorPane = new AnchorPane();  
    anchorPane.setStyle("-fx-background-color: green;");  
    AnchorPane anchorPane1 = new AnchorPane();  
    anchorPane1.setStyle("-fx-background-color: yellow;");  
    anchorPane.getChildren().add(anchorPane1);  
    primaryStage.setScene(new Scene(anchorPane));  
    primaryStage.setTitle("JavaFx");  
    primaryStage.setHeight(300);  
    primaryStage.setWidth(300);  
    primaryStage.show();  
    anchorPane.setTopAnchor(anchorPane1, 0.0);  
    anchorPane.setBottomAnchor(anchorPane1, anchorPane.getHeight() / 2 - anchorPane1.getHeight() / 2);  
    anchorPane.setLeftAnchor(anchorPane1, 0.0);  
    anchorPane.setRightAnchor(anchorPane1, anchorPane.getWidth() / 2 - anchorPane1.getWidth() / 2);
    
  • 添加宽高属性监听器

    anchorPane.heightProperty().addListener(new ChangeListener<Number>() {  
        @Override  
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {  
            anchorPane.setBottomAnchor(anchorPane1, anchorPane.getHeight() / 2);  
        }  
    });  
    anchorPane.widthProperty().addListener(new ChangeListener<Number>() {  
        @Override  
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {  
            anchorPane.setRightAnchor(anchorPane1, anchorPane.getWidth() / 2);  
        }  
    });