public void start(Stage stage) throws Exception {
FlowPane flowPane = new FlowPane();
flowPane.setOrientation(Orientation.VERTICAL);
for(int i = 0; i < 101;i++) {
Label aLabel = new Label("Label number: " + i);
flowPane.getChildren().add(aLabel);
}
Scene applicationScene = new Scene(flowPane);
stage.setHeight(400.0);
stage.setWidth(400.0);
stage.setScene(applicationScene);
stage.show();
}
我正在尝试编写代码,以便所有标签最终都在同一列中,即使标签不在窗口内(我计划添加scrollPane以使标签仍然可见)。但是,我不知道为什么,因为标签在填充第一列时会自动开始填充下一列(example here)。我应该怎么做呢?
答案 0 :(得分:1)
我不清楚为什么标签会自动开始填充 第一个填充时的下一列
这是FlowPane
的功能。来自documentation:
FlowPane将其子项布置在包裹流动窗口的流中 边界。 ...垂直流动窗格以列的形式布置节点,包裹在流动窗格的高度。
您应该使用VBox
代替:
public void start(Stage stage) throws Exception {
VBox vbox = new VBox();
for(int i = 0; i < 101;i++) {
Label aLabel = new Label("Label number: " + i);
vbox.getChildren().add(aLabel);
}
Scene applicationScene = new Scene(vbox);
stage.setHeight(400.0);
stage.setWidth(400.0);
stage.setScene(applicationScene);
stage.show();
}
如果要显示大量数据,您可能还会考虑使用ListView
。 ListView
有一个更复杂的API(它管理选择,如果你选择可以编辑),并在需要时提供自己的滚动条,但它对于大量数据更有效(基本上它只创建UI)控制可见数据,并在用户滚动时重复使用它们。