我主要使用场景生成器为我的javafx应用程序创建ui。我目前正在使用垂直的FlowPane
使其按照我想要的方式进行排列,但是它并没有按照我想要的方式向下延伸,而是从窗口的右侧继续延伸。
我绘制了红色轮廓,以说明其他框的放置位置。 FlowPane
是用于此的适当容器吗?如果是这样,我如何使它工作?
最佳答案
查看此示例Application
:
private static final Random rand = new Random();
private static final int max = 200;
@Override
public void start(Stage primaryStage) {
try {
FlowPane root = new FlowPane(Orientation.VERTICAL);
root.setPrefWrapLength(5000);
root.setPadding(new Insets(10));
root.setHgap(10);
root.setVgap(10);
for (int i = 0; i < 200; i++) {
Rectangle rectangle = new Rectangle(50, 50);
rectangle.setFill(Color.rgb((int) (rand.nextDouble() * max),
(int) (rand.nextDouble() * max),
(int) (rand.nextDouble() * max)));
root.getChildren().add(rectangle);
}
Scene scene = new Scene(new ScrollPane(root), 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
root.setPrefWrapLength(5000);
行很重要,因为FlowPane.setPrefWrapLength()
确定FlowPane
将增长到多大(以像素为单位)。当您的
FlowPane
是VERTICAL
时,root.setPrefWrapLength(5000);
确定每列最多向下增长5000。之后,将创建一个新列。如果要限制列数,换句话说:
FlowPane
的最大宽度,则应从VERTICAL
切换到HORIZONTAL
,因为FlowPane.setPrefWrapLength()
会限制窗格的宽度。