JavaFX – 将TableView高度调整为行数

我希望我的TableView的高度适应填充的行数,因此它永远不会显示任何空行。 换句话说,TableView的高度不应超出最后填充的行。 我该怎么做呢?

如果您希望这个工作,您必须设置fixedCellSize

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

演示:

 @Override public void start(Stage primaryStage) { TableView tableView = new TableView<>(); TableColumn 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)乘以包含标题行。