Layout TableView的列数超过指定的列数

Layout TableView的列数超过指定的列数,layout,tableview,javafx-2,Layout,Tableview,Javafx 2,在JavaFX2中使用TableView时,似乎神奇地添加了一列,而不是调整现有列的大小。请参见下面的屏幕截图 我期望/想要的是:两列都有50%的空间,不应添加第三列(未命名/空) 使用场景生成器创建,FXML代码: 使用 通过这样做,您可以确保表列标题中的额外空间将分布在列之间。在此分布中,当然会考虑列的最大和最小宽度。 默认情况下,TableView.unconstraint\u RESIZE\u策略用于tablecolumns最初采用其首选宽度的位置。Uluk Bly的答案对于代码来

在JavaFX2中使用TableView时,似乎神奇地添加了一列,而不是调整现有列的大小。请参见下面的屏幕截图

我期望/想要的是:两列都有50%的空间,不应添加第三列(未命名/空)

使用场景生成器创建,FXML代码:


使用

通过这样做,您可以确保表列标题中的额外空间将分布在列之间。在此分布中,当然会考虑列的最大和最小宽度。

默认情况下,
TableView.unconstraint\u RESIZE\u策略
用于tablecolumns最初采用其首选宽度的位置。

Uluk Bly的答案对于代码来说绝对正确

此外,使用Scenebuilder,请确保将“属性”下拉窗口中的策略设置为相同(受约束),并且该策略应显示在FXML文件中,如下所示:

    <columnResizePolicy>
    <TableView fx:constant = "CONSTRAINED_RESIZE_POLICY"/>
    </columnResizePolicy>


谢谢乌鲁克,这很有帮助!请作为答案发布,这样我就可以选择正确的答案:-)你对这种奇怪的行为有什么想法吗?这是因为默认的列宽行为将列调整为列中最宽的元素。所以剩余的空间没有被使用。你也可以用FXML来做吗?@user311525,是的。尝试使用
。虽然没有尝试,但它应该可以工作。是否可以使用首选宽度,但不显示右侧的附加列?例如,将无约束策略与约束策略相结合。
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    <columnResizePolicy>
    <TableView fx:constant = "CONSTRAINED_RESIZE_POLICY"/>
    </columnResizePolicy>