如何让孩子在javafx中自动调整大小(孩子是Pane,父母是VBox)

我有两个问题

1.在javafx应用程序中,我想将子(crosshairArea)放在其父级的左上角,也是1/2宽度和高度.
我想我可以通过覆盖父函数“layoutChildren”(VBox)来做到这一点,
还有其他办法吗?例如财产约束?

2.初始VBox将占据整个场景区域,如何将其(重新定位)到场景的半底?

public class Crossh extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {        
        VBox root = new VBox(5);
        // root.setPadding(new Insets(20,20,20,20));
        root.setStyle("-fx-border-color:red");

        Pane crosshairArea = new Pane();
        crosshairArea.maxWidthProperty().bind(root.widthProperty());
        crosshairArea.setStyle("-fx-border-color:black");       

        root.getChildren().add(crosshairArea);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Location Crosshair");
        stage.setWidth(900);
        stage.setHeight(700);        
        stage.show();
    }
}
最佳答案
对于你的第一个问题你有没有尝试过VBox的高度属性.例如

root.heightProperty().addListener(new ChangeListener<Number>() {

        @Override
        public void changed(ObservableValue<? extends Number> arg0,
                Number arg1, Number arg2) {
            crosshairArea.setPrefHeight(arg2.doubleValue()/2);

    }
});

对于第二个问题,你必须在VBox上放置一些东西以占据顶部的大小,或者你可以将VBox的对齐设置为Pos.BOTTOM

转载注明原文:如何让孩子在javafx中自动调整大小(孩子是Pane,父母是VBox) - 代码日志