Vbox не заполняет все доступное пространство в сетке - PullRequest
1 голос
/ 14 мая 2019

В настоящее время я занимаюсь разработкой мессенджера в javafx. мой общий макет представляет собой сетку с настраиваемым Vbox, содержащим ListView и текстовое поле. Проблема в том, что, как вы можете видеть ниже, под текстовым полем находится большая пустая область. Я уже пытался установить для ряда строк значение 2, которое не сработало.

here

Важный код:

Main:

chatBox = new ChatBox();
gridPane.add(chatBox, 1, 0, 1, 2);

ChatBox (расширяет Vbox):

private static ListView<Message> messages;
private TextField inputField;

public ChatBox() {
    inputField = new TextField();
    messages = new ListView<>();
    init();
    getChildren().addAll(messages, inputField);
}

Ответы [ 3 ]

3 голосов
/ 14 мая 2019

Попробуйте добавить это в классе ChatBox:

 VBox.setVgrow(messages, Priority.ALWAYS);

И добавить это в основной класс:

GridPane.setVgrow(chatBox, Priority.ALWAYS);
1 голос
/ 14 мая 2019

Вам необходимо установить vgrow с помощью RowConstraints.Предполагая, что ваша первая строка содержит ListView, который должен занять все доступное пространство:

RowConstraints constraints = new RowConstraints();
constraints.setVgrow(Priority.ALWAYS);
gridPane.getRowConstraints().addAll(constraints, new RowConstraints());
0 голосов
/ 14 мая 2019

Чтобы заставить представление списка принять всю высоту, доступную в его родительском элементе, вы можете использовать следующий метод:

messages.setMaxHeight(Double.MAX_VALUE);

Если проблема связана с VBox, его maxHeight также можно изменить тем же методом.

...