当前位置: 首页 > 面试题库 >

JavaFX-将TableView的高度调整为行数

尉迟默
2023-03-14
问题内容

我希望TableView的高度适应填充的行数,以使其从不显示任何空行。换句话说,TableView的高度不应超过最后填充的行。我该怎么做呢?


问题答案:

如果您希望此操作有效,则必须设置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)以包含标题行。



 类似资料:
  • 我目前正在做一个项目,我找不到任何解决方案。我希望Gridpane行的高度从该行中一个特定列的宽度动态计算。整个Gridpane必须可调整大小,其余可用空间应位于下面的另一行,以便根据该单元格内的元素保留该单元格的纵横比。孩子们,有什么想法吗? 我希望单元格1,0和1,1可以调整大小,并且通过增加其宽度,可以清楚地看到第0行和第1行的高度不应该平均增加。如果还剩下任何高度,我希望第3行可以承受,因

  • 我已经开始为绘制温度数据编程这个应用程序,当屏幕调整大小时,画布也应该调整大小。它初始化正确,但当我想调整窗口大小时,draw()方法只会根据它绑定的stackpanes高度值调整高度大小,但它将完全忽略宽度。听者甚至不会开火。这我觉得很奇怪。此外,我必须为StackPane设置最小大小,否则将不会绘制任何东西。我没有使用FXML。 编辑我将第58行从setRight()更改为setCenter,

  • 我有一个TableView,在这个TableView中,有5列。其中一列只包含TableView中的行数,它只是对它们进行计数。以下行为是我想要实现的: 数字列应具有与其内容相适应的宽度 数字列不可缩放 其他列应可调整大小 当内容太长时,其他列可以并且应该截断它们的内容,以便它们适合TableView的区域,并且不可见水平滚动条 我有5个TableView列,我是这样创建的: 所以我的问题是:如何

  • 我正在为我的项目使用 iTextPDF 免费标记。基本上,我使用免费标记加载并填充一个HTML模板,然后使用iTextPDF的将其呈现为PDF。 模板是: 这是我的代码: 这段代码运行良好,但是固定高度是一个问题。 即假设: 生成的文档是: 相反,如果我用 生成的文档是: 如你所见,在最后一份文件中,我有两页。我希望只有一个页面,它根据内容的高度改变其高度。 iText有可能实现这样的事情吗?

  • 我有一个表,它只包含列ID和name。但是,这个表被嵌入到一个SplitPane中,让用户有机会轻松快速地更改大小。我希望桌子总是在整个宽度内填满。ID列的大小设置为70,并且只有Name列应该始终传播到表的剩余宽度。我使用FXML创建布局。有没有可能直接在FXML中设置这个?

  • 我在禁用TableView中的行时遇到问题。我有一个包含三列的TableView。名称列、值列和复选框列。如果用户选中复选框,则应使用与选中行中的值相同的值禁用所有行。我尝试使用ReactFX2框架在禁用的属性和单元格之间创建绑定,但没有成功。有没有一个简单的方法来处理我的问题。这是我的代码: trafficvolume.class controller.class 我想禁用所有与所选行具有相同f