java - 使用数组时 ColumnConstraints.setPercentWidth() 不起作用

标签 java javafx

我在 JavaFX 布局中使用 GridPane,并且总是使用 ColumnConstraints 的宽度百分比,但在一种特定情况下,它似乎不起作用:当我在数组内设置 ColumnConstraints 的宽度百分比时。

我的代码:

ColumnConstraints[] myColumns = Factory.createColumns(3);
myColumns[0].setPercentWidth(35);
myColumns[1].setPercentWidth(12);
myColumns[2].setPercentWidth(53);
devicePane.getColumnConstraints().setAll(myColumns);

该数组来 self 使用等分大小创建列的实用方法:

public static final ColumnConstraints[] createColumns(int count) {

    ColumnConstraints[] columns = new ColumnConstraints[count];

    ColumnConstraints column = new ColumnConstraints(1, 10, Double.MAX_VALUE);
    column.setPercentWidth(100/count);
    column.setFillWidth(true);
    column.setHgrow(Priority.ALWAYS);
    column.setHalignment(HPos.CENTER);

    for(int i = 0; i < count; i++) {

        columns[i] = column;

    }

    return columns;

}

结果: Columns with old width percentage

但预期是: Columns with right width percentage

最佳答案

您只是创建一个ColumnConstraints 对象。这使得无法为 percentWidth 属性分配不同的值。您需要为此目的创建单独的对象:

public static final ColumnConstraints[] createColumns(int count) {
    ColumnConstraints[] columns = new ColumnConstraints[count];

    for(int i = 0; i < count; i++) {
        ColumnConstraints column = new ColumnConstraints(1, 10, Double.MAX_VALUE);
        column.setPercentWidth(100/count); // do we still need this?
        column.setFillWidth(true);
        column.setHgrow(Priority.ALWAYS);
        column.setHalignment(HPos.CENTER);
        columns[i] = column;
    }

    return columns;
}

关于java - 使用数组时 ColumnConstraints.setPercentWidth() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58632803/

相关文章:

java - 规范 JPA - 内部 + where 子句

JavaFX:如何设置相对于鼠标光标的工具提示位置?

java - 更改disableProperty()函数的颜色/如何禁用舞台上的点击

javafx - 找不到 JavaFX 打包工具

java - 如何在 CellFactory 的 updateItem() 中获取行值

java - 在 Java 中使用 Selenium 单击动态下拉 div

java - Mysql 复杂对象 Hibernate 批量插入

java - JOptionPane 中的 Inluce 方法

java - 如何将本地坐标转换为JavaFX图表坐标

Java ForkJoin 多线程比单线程慢