我正在使用JavaFX编写程序
Borderpane - >中心 - > VBox - > ScrollPane-> Gridpane
我希望能够在网格窗格中添加尽可能多的行,并让滚动窗口自动扩展。
注意:我有一些很长的文件,所以我只包含了重要的部分。如果您需要整个FXML或Controller文件,请给我留言。
这是我的gridpane / scrollpane的FXML:
<BorderPane>
<center>
<VBox>
<children>
<ScrollPane fx:id="messageScrollPane" vbarPolicy="ALWAYS" hbarPolicy="NEVER" hmax="0.0" vmax="0.0">
<content>
<GridPane fx:id="messageBox" prefHeight="540.0" prefWidth="589.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
<RowConstraints maxHeight="Infinity" minHeight="10.0" prefHeight="30.0" vgrow="ALWAYS" />
</rowConstraints>
</GridPane>
</content>
</ScrollPane>
</children>
</VBox>
</center>
</BorderPane>
我的控制器里面有以下代码用于FXML
@FXML
private GridPane messageBox;
if (me.getMail().size() > 0) {
for (int i = 0; i < me.getMail().size(); i++) {
messageBox.add(new Label(me.getMail().get(i).toString()), 0, rowNum);
rowNum++;
}
}
谢谢大家的帮助!
赖安
答案 0 :(得分:0)
您已将ScrollPane放在VBox内。您应该{ScraPane set the vgrow priority Priority.ALWAYS以允许ScrollPane增长以填充VBox的可用区域。
您可以通过添加以下属性在FXML中执行此操作:
<div id="block1">
<div id="one">LEFT SIDE</div>
<div id="two">RIGHT TOP</div>
<div id="three">RIGHT BOTTOM</div>
</div>
<div id="block2">
BELOW
</div>
到VBox.vgrow="ALWAYS"
元素
或者,您可以通过以下代码执行此操作:
<ScrollPane VBox.vgrow="ALWAYS" ...>
此外,您的代码的另一个问题是您要在网格窗格中动态添加行(在代码中循环中)。如果您希望这样做,则应在FXML中定义VBox.setVgrow(scrollPane, Priority.ALWAYS);
(因为FXML不能包含可变数量的行)。相反,在循环中应用行约束:
RowConstraints