ColumnConstraints.setPercentWidth () не работает при использовании массива - PullRequest
0 голосов
/ 30 октября 2019

Я использую GridPane для своего макета JavaFX и всегда использую проценты ширины для ColumnConstraints, но в одном конкретном случае кажется, что это не работает: когда я устанавливаю процент ширины ColumnConstraints внутри массива.

Мой код:

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

Массив получен из моего служебного метода для создания столбцов с использованием поровну разделенных размеров:

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;

}

Результат: Столбцы со старым процентом ширины

Но ожидается: Столбцы с правильным процентом ширины

1 Ответ

3 голосов
/ 30 октября 2019

Вы просто создаете один 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...