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());
我目前正在用 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());