TableView的列数多于指定的列数

时间:2012-10-17 12:04:15

标签: layout tableview javafx-2

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

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

enter image description here

使用Scene Builder创建,FXML代码:     

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <top>
    <TableView prefHeight="200.0" prefWidth="200.0">
      <columns>
        <TableColumn prefWidth="75.0" text="Column X" />
        <TableColumn prefWidth="75.0" text="Column X" />
      </columns>
    </TableView>
  </top>
</BorderPane>

3 个答案:

答案 0 :(得分:30)

使用

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

通过执行此操作,您可以确保表列标题中的额外空间将在列之间分配。在此分布中,当然会考虑列的最大和最小宽度 默认情况下,使用TableView.UNCONSTRAINED_RESIZE_POLICY,其中tablecolumns最初将采用其首选宽度。

答案 1 :(得分:2)

Uluk Bly的回答绝对正确。

此外,使用Scenebuilder,确保将属性下拉窗口中的策略设置为相同(CONSTRAINED),它应该显示在FXML文件中,如下所示:

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

答案 2 :(得分:1)

这在javafx 2.2中对我有好处

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);