java - android :weight in JavaFX的对应

标签 java android javafx android-layout-weight

我正在开发一个用于 JavaFX 培训的小软件。

在 Android 中,在 LinearLayout 中,我可以通过设置变量 android:weight="someValue" 展开 View 以填充整个可用空间,不幸的是我我无法实现这一点是 JavaFX。

我尝试使用最大/最小/首选高度,但没有成功。

非常感谢任何帮助。

最佳答案

使用 VBox/HBox 您可以设置子项的 vgrow/hgrow 静态属性(或其中一些)到 Priority.ALWAYS,这使得那些 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 并设置 percentWidth/percentHeight 属性>ColumnConstraints/RowConstraints

@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();
}

关于java - android :weight in JavaFX的对应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941281/

相关文章:

android - 根据 SDK 级别忽略 Android 单元测试

android - 如何获取缩放缩略图?

Android 操作栏向上导航按钮在设备上不起作用

java - Runnable 和 ScheduledExecutorService 的内存泄漏

JAVAFX:setMaxWidth() 和 maxWidthProperty().set() 之间的区别

java - 是否可以用 Javafx 中的新场景填充 TableView 的行?

java - 从链表中删除任何元素所需时间复杂度为 O(1) - Java 与 C++

java - 将空数组添加到 JSON 对象

java - 扩展类来存储附加信息是一个好习惯吗?

java - 基于接口(interface)的 Java/Groovy Web 服务