JavaFX - 使表视图高度适应行数

2022-09-02 04:24:30

我希望 TableView 的高度能够适应填充行数,以便它永远不会显示任何空行。换言之,TableView 的高度不应超过最后一个已填充行。我该怎么做?


答案 1

如果你想让它工作,你必须设置固定的CellSize

然后,您可以将 的高度绑定到表中包含的项目的大小乘以固定的单元格大小。TableView

演示:

@Override
public void start(Stage primaryStage) {

    TableView<String> tableView = new TableView<>();
    TableColumn<String, String> col1 = new TableColumn<>();
    col1.setCellValueFactory(cb -> new SimpleStringProperty(cb.getValue()));
    tableView.getColumns().add(col1);
    IntStream.range(0, 20).mapToObj(Integer::toString).forEach(tableView.getItems()::add);

    tableView.setFixedCellSize(25);
    tableView.prefHeightProperty().bind(tableView.fixedCellSizeProperty().multiply(Bindings.size(tableView.getItems()).add(1.01)));
    tableView.minHeightProperty().bind(tableView.prefHeightProperty());
    tableView.maxHeightProperty().bind(tableView.prefHeightProperty());

    BorderPane root = new BorderPane(tableView);
    root.setPadding(new Insets(10));
    Scene scene = new Scene(root, 400, 400);
    primaryStage.setScene(scene);
    primaryStage.show();
}

注意:我将 fixedCellSize * (数据大小 + 1.01) 相乘以包含标题行。


答案 2

推荐