Как динамически добавить разрыв в потоковую панель, встроенную в полосу прокрутки, если пользователь изменяет размер полосы прокрутки - PullRequest
0 голосов
/ 11 января 2019

Как динамически добавить разрыв в FlowPane, встроенный в ScrollPane, если пользователь изменяет размер ScrollPane?

У меня есть окно с GridPane. Внутри этой GridPane у меня есть ScrollPane. В этой ScrollPane у меня есть VBox.

Я добавляю массив кругов в FlowPane и добавляю этот FlowPane в VBox.

Я хотел бы динамически установить расстояние между кружками в зависимости от размера окна или ScrollPane.

На данный момент я поставил пробел 5, но если размер окна действительно очень большой, из-за FlowPane, контент остается слева. Я бы хотел, чтобы содержимое занимало все горизонтальное пространство.

Я пытался связать и changeListener, но я не нашел решения.

1 Ответ

0 голосов
/ 11 января 2019

Для особого случая постоянного числа столбцов и дочерних элементов одинакового размера я рекомендую использовать GridPane с соответствующими ColumnConstraints.

Это позволяет вам обеспечить одинаковую ширину столбцов в дополнение к указанию выравнивания узлов в столбцах:

@Override
public void start(Stage primaryStage) throws Exception {
    final int columns = 2;
    ColumnConstraints columnConstraints = new ColumnConstraints();
    columnConstraints.setPercentWidth(100d/columns);
    columnConstraints.setHalignment(HPos.CENTER);

    GridPane grid = new GridPane();

    for (int i = 0; i < columns; i++) {
        grid.getColumnConstraints().add(columnConstraints);
    }

    for (int i = 0; i < 100; i++) {
        grid.add(new Circle(50), i % columns, i / columns);
    }

    ScrollPane scrollPane = new ScrollPane(new VBox(grid));
    scrollPane.setFitToWidth(true); // make sure GridPane content resizes with viewport

    Scene scene = new Scene(scrollPane, 300, 300);
    primaryStage.setScene(scene);
    primaryStage.show();
}

Изменение дочернего списка GridPane становится немного более сложным, поскольку индексы строк / столбцов необходимо корректировать / устанавливать, но это не так уж сложно. Просто убедитесь, что индекс столбца дочернего элемента с индексом i равен i % columns, а индекс строки i / columns.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...