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