我目前正在用javafx开发一个Messenger。我的总体布局是带有自定义Vbox的网格窗格,该Vbox包含ListView和Textfield。问题是,如您在下面看到的,在文本字段下方有一个大的emty区域。我已经尝试将行距设置为2,这是行不通的。
重要代码:
主要:
[myId_01,myId_02]
ChatBox(扩展了Vbox):
chatBox = new ChatBox();
gridPane.add(chatBox, 1, 0, 1, 2);
答案 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。