JavaFX - 使 TableView 高度适应行数

Posted

技术标签:

【中文标题】JavaFX - 使 TableView 高度适应行数【英文标题】:JavaFX - Adapt TableView height to number of rows 【发布时间】:2015-03-12 19:21:15 【问题描述】:

我希望我的 TableView 的高度适应填充的行数,这样它就不会显示任何空行。换句话说,TableView 的高度不应超过最后填充的行。我该怎么做?

【问题讨论】:

我不明白为什么人们会以“不清楚你在问什么”或“太宽泛”为由投票结束这个问题。问题说得很清楚,也很具体。如果您投票结束,请发表评论并解释原因。 在我看来,这个问题对于任何使用过 JavaFX 的人来说都是非常清楚的(尤其是使用 TableViews,但即使没有)。我注意到投票结束的人都没有回答一个 JavaFX 问题。 “我不熟悉该技术”并不是结束问题的真正理由。投票重新开放... 我通常做table.setPrefHeight();摆脱我眼中的那些空行XD 相关问题(有工作答案,让我有偏见;),有些人可能称之为重复 - ***.com/a/26364210/203657 【参考方案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)以包含标题行。

【讨论】:

hmm .. 对我不起作用(任意因素几乎肯定迟早会失败;) “不起作用”是什么意思?更多细节会很好.. ;-) 这是显示垂直滚动条的方式(顺便说一句:如果您忘记了@somenick,那么 somenick 将不会收到通知) @kleopatra 是的,这是找到正确的表头高度的斗争。似乎您的标题很大和/或您的屏幕 DPI 使标题更大.. @eckig 它对我不起作用。我在调试 Bindings.size(tableView.getItems()) 时得到 IntegerBinding [invalid]。

以上是关于JavaFX - 使 TableView 高度适应行数的主要内容,如果未能解决你的问题,请参考以下文章

iOS tableView跟随内容高度自适应变化

如何让qml TableView行高动态适应内容

如何使用CSS来设置两个相邻TableView的边框样式,使它们看起来像是JavaFX 11中的单个TableView(OpenJFX 11)

cell 高度自适应

在tableview的headerView中添加webView,webView自适应高度

没有对象的 TableView 中的组合框 - JavaFX