如何限制javafx vertical flowpane中的列数
How to limit the number of columns in a javafx vertical flowpane
我主要使用场景 builder 为我的 javafx 应用程序创建 ui。我目前正在使用垂直 FlowPane
来按照我想要的方式排列它,但是它并没有按照我想要的方式继续向下 uing ,而是继续离开 [= 的右侧20=].
我画了红色轮廓来展示我想要放置其他框的位置。 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()
然后将限制窗格的宽度。
我主要使用场景 builder 为我的 javafx 应用程序创建 ui。我目前正在使用垂直 FlowPane
来按照我想要的方式排列它,但是它并没有按照我想要的方式继续向下 uing ,而是继续离开 [= 的右侧20=].
我画了红色轮廓来展示我想要放置其他框的位置。 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()
然后将限制窗格的宽度。