如果用户调整ScrollPane的大小,如何为嵌入ScrollPane的FlowPane动态添加间隙?
我有一个带有GridPane的窗口。 在此GridPane中,我有一个ScrollPane。 在此ScrollPane中,我有一个VBox。
我在FlowPane中添加了一个圆形数组,并将此FlowPane添加到了VBox中。
我想根据窗口或ScrollPane的大小动态设置圆之间的间隔。
目前,我的间隙为5,但是如果由于FlowPane而将窗口的大小调整得很大,则内容将保留在左侧。我希望内容占据所有水平空间。
我尝试使用绑定和changeListener,但没有找到解决方案。
答案 0 :(得分:0)
对于恒定数目的列和相等大小的子代的特殊情况,我建议使用GridPane
和适当的ColumnConstraints
。
除了指定列中节点的对齐方式之外,这还可以确保列宽相同:
@Override
public void start(Stage primaryStage) throws Exception {
final int columns = 2;
ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setPercentWidth(100d/columns);
columnConstraints.setHalignment(HPos.CENTER);
GridPane grid = new GridPane();
for (int i = 0; i < columns; i++) {
grid.getColumnConstraints().add(columnConstraints);
}
for (int i = 0; i < 100; i++) {
grid.add(new Circle(50), i % columns, i / columns);
}
ScrollPane scrollPane = new ScrollPane(new VBox(grid));
scrollPane.setFitToWidth(true); // make sure GridPane content resizes with viewport
Scene scene = new Scene(scrollPane, 300, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
修改GridPane
的子级列表变得有点复杂,因为行/列索引需要调整/设置,但这并不困难。只需确保索引i
处子项的列索引为i % columns
,行索引i / columns
。