设置table宽度为所有列宽度的累加

Set table width to the accumulated width of all columns

我试图让 TableView 对象的宽度与所有 Table 列的总和一样宽,以便 Table 完全显示而没有滚动条. table 在网格布局中,我尝试使用以下代码获取所有列的宽度:

private double getTableWidth(TableView dataTable){
        double totalWidth = 0;
        for(int i = 0; i < dataTable.getColumns().size(); i++){
            totalWidth += ((TableColumn) dataTable.getColumns().get(i)).getWidth();
        }
        return totalWidth;
}

但不知何故,每列的宽度为 80,即使它们看起来宽度不同。

要设置 table 的宽度,我使用以下内容:

dataTable.setMinWidth(getTableWidth(dataTable));

注意: 我从具有以下代码的 TableView-Object 开始:

children>
      <TableView fx:id="dataTable" prefHeight="451.0" prefWidth="701.0" />
   </children>

并通过创建 Table 没有宽度参数或任何其他内容的列来填充 table。

当前状态图:

您应该将列大小调整策略设置为 constrained-resize,这样您将填充每列的所有可用宽度。

您可以使用 FXML 来完成:

<TableView fx:id="tableView" layoutX="110.0" layoutY="78.0" prefHeight="200.0" prefWidth="396.0">
    <columnResizePolicy><TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/></columnResizePolicy>
    <columns>
        <TableColumn prefWidth="75.0" text="Column X" />
        <TableColumn prefWidth="75.0" text="Column X" />
    </columns>
</TableView>

您可以通过编程方式完成:

tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

你可能想看看there