2
我正在開發一款用於JavaFX培訓的小軟件。Android中的重量:JavaFX中的重量
在Android中,在LinearLayout
的內部,我可以通過設置變量android:weight="someValue"
來擴大視圖以填充整個可用空間,不幸的是我無法實現這是JavaFX。
我試過用max/min/pref高度,但它沒有工作。
任何幫助將非常感激。
我正在開發一款用於JavaFX培訓的小軟件。Android中的重量:JavaFX中的重量
在Android中,在LinearLayout
的內部,我可以通過設置變量android:weight="someValue"
來擴大視圖以填充整個可用空間,不幸的是我無法實現這是JavaFX。
我試過用max/min/pref高度,但它沒有工作。
任何幫助將非常感激。
使用VBox
/HBox
可以設置孩子到Priority.ALWAYS
的vgrow
/hgrow
靜態屬性(或其中的一些),這使得那些Node
小號成長當父增長(假設他們可以調整大小)。
private static Region createRegion(String color) {
Region region = new Region();
region.setStyle("-fx-background-color: "+color);
return region;
}
@Override
public void start(Stage primaryStage) {
VBox vbox = new VBox(
createRegion("red"),
createRegion("blue"),
createRegion("green")
);
for (Node n : vbox.getChildren()) {
VBox.setVgrow(n, Priority.ALWAYS);
}
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.show();
}
要控制孩子的相對權重,你可以使用一個GridPane
代替,並設置ColumnConstraints
/RowConstraints
的percentWidth
/percentHeight
性能。
@Override
public void start(Stage primaryStage) throws IOException {
GridPane root = new GridPane();
root.getColumnConstraints().addAll(DoubleStream.of(30, 2, 68)
.mapToObj(width -> {
ColumnConstraints constraints = new ColumnConstraints();
constraints.setPercentWidth(width);
constraints.setFillWidth(true);
return constraints;
}).toArray(ColumnConstraints[]::new));
RowConstraints rowConstraints = new RowConstraints();
rowConstraints.setVgrow(Priority.ALWAYS);
root.getRowConstraints().add(rowConstraints);
root.addRow(0, Stream.of("red", "green", "blue").map(s -> createRegion(s)).toArray(Node[]::new));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
謝謝!太棒了 – Matteo