我正在尝试使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来填充表格。
您应该将列调整大小策略设置为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