我一直试图让GridPane的内容表现出与自动尺寸相关的但我对JavaFX来说相对较新,所以我没有取得任何成功。基本上,每列对我来说都是一个完全随机的大小,我不知道如何使它们正确生长。如果我尝试设置列约束,内容有时会完全消失,有时它的大小完全是任意的。尝试将首选宽度绑定到其他任何位置也无法正常工作。不过,我确定错误是我的错误。这是我的代码(contentHolder是一个将vGrow设置为ALWAYS的ScrollPane):
int row = 1;
GridPane gridPane = new GridPane();
for (List<IndexObject> stepList : search) {
Label itemLabel = new Label();
itemLabel.setText(String.valueOf(row));
TreeItem<String> treeRoot = new TreeItem<>(stepList.get(0).getPath());
for (int line = 1; line < stepList.size(); line++) {
treeRoot.getChildren().add(new TreeItem<>(stepList.get(line).getPath()));
}
TreeView treeView = new TreeView();
treeView.setShowRoot(true);
treeView.setRoot(treeRoot);
treeRoot.setExpanded(true);
IndexObject lastObject = stepList.get(stepList.size() - 1);
TextArea output = new TextArea();
output.setText(lastObject.prettyPrint());
gridPane.addRow(row, itemLabel, treeView, output);
row++;
}
contentHolder.setContent(gridPane);
到clientHolder的所有内容都在fxml中定义。这是它的样子。没有任何条目接近自动分配的高度,但所有宽度都太小。我错过了什么?
答案 0 :(得分:1)
答案是滚动窗格在您创建之前不会自动调整大小:
<ScrollPane VBox.vgrow="ALWAYS" fitToWidth="true">
此时一切都按预期工作。