如何限制javafx垂直流程窗格中的列数

时间:2015-02-04 07:59:01

标签: java javafx scenebuilder

我主要使用场景构建器为我的javafx应用程序创建ui。我目前正在使用垂直FlowPane来按照我想要的方式进行排列,但不是按照我希望的方式向下延伸,而是继续从窗口的右侧开始。

Application image

我已经绘制了红色轮廓来展示我希望将其他框放置在哪里。 FlowPane是否适合使用此容器?如果是这样,我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

请看这个示例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增长的大小(以像素为单位)。

由于FlowPaneVERTICALroot.setPrefWrapLength(5000);确定每列最多向下增长5000。之后会创建一个新列。

如果您想限制列数,或者换句话说:FlowPane的最大宽度应该从VERTICAL切换为HORIZONTAL FlowPane.setPrefWrapLength()然后限制窗格的宽度。