JavaFX-адаптация высоты TableView к количеству строк
Я хочу, чтобы высота моего TableView адаптировалась к количеству заполненных строк, чтобы он никогда не показывал пустые строки. Другими словами, высота TableView не должна выходить за пределы последней заполненной строки. Как мне это сделать?
1 ответов
Если вы хотите, чтобы это работало, вы должны установить fixedCellSize.
тогда вы можете связать высоту 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), чтобы включить строку заголовка.
