Vbox不会填满网格窗格中的所有可用空间

时间:2019-05-14 09:01:50

标签: java javafx gridpane

我目前正在用javafx开发一个Messenger。我的总体布局是带有自定义Vbox的网格窗格,该Vbox包含ListView和Textfield。问题是,如您在下面看到的,在文本字段下方有一个大的emty区域。我已经尝试将行距设置为2,这是行不通的。

here

重要代码:

主要:

[myId_01,myId_02]

ChatBox(扩展了Vbox):

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

3 个答案:

答案 0 :(得分:3)

尝试在ChatBox类中添加它:

 VBox.setVgrow(messages, Priority.ALWAYS);

并将其添加到主类中:

GridPane.setVgrow(chatBox, Priority.ALWAYS);

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

messages.setMaxHeight(Double.MAX_VALUE);

如果问题来自VBox,也可以使用相同的方法修改其maxHeight。