将表的宽度设置为所有列的累积宽度

问题描述 投票:0回答:1

我正在尝试使TableView对象的宽度与所有TableColumns的累加之和一样宽,以便完全显示该表而没有滚动条。该表位于网格布局内,我尝试使用以下代码获取所有列的宽度:

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,即使它们看起来宽窄也不一样。

要设置表格的宽度,请使用以下内容:

dataTable.setMinWidth(getTableWidth(dataTable));

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

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

并通过创建不带宽度参数或任何其他内容的TableColumns来填充表格。

当前状态的图片:enter image description here

java javafx javafx-8
1个回答
0
投票

您应该将列调整大小策略设置为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

© www.soinside.com 2019 - 2024. All rights reserved.