Vbox 未填满网格窗格中的所有可用 space

Vbox not filling up all of the available space in a gridpane

我目前正在用 javafx 开发一个 Messenger。我的总体布局是一个带有自定义 Vbox 的网格窗格,其中包含一个 ListView 和一个 Textfield。问题是,正如您在下面看到的,文本字段下方有一个很大的空白区域。我已经尝试将 rowspan 设置为 2,但没有用。

重要代码:

主要:

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

为了强制列表视图占据其父级中所有可用的高度,可以使用以下方法:

messages.setMaxHeight(Double.MAX_VALUE);

如果是VBox的问题,也可以用同样的方法修改它的maxHeight。

尝试在 ChatBox 中添加这个 class:

 VBox.setVgrow(messages, Priority.ALWAYS);

并在主class中添加:

GridPane.setVgrow(chatBox, Priority.ALWAYS);

您需要使用 RowConstraints 设置 vgrow。假设您的第一行包含应该占用所有可用 space:

ListView
RowConstraints constraints = new RowConstraints();
constraints.setVgrow(Priority.ALWAYS);
gridPane.getRowConstraints().addAll(constraints, new RowConstraints());