TableView имеет больше столбцов, чем указано
При использовании TableView в JavaFX 2, кажется, волшебным образом добавляется одна колонка вместо изменения существующих. См. Следующий снимок экрана.
То, что я ожидал бы/хочу: обе колонки должны иметь 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>
Ответы
Ответ 1
Использование
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
Выполняя это, вы гарантируете, что дополнительное пространство в заголовке столбца таблицы будет распределено между столбцами. В этом распределении, конечно, учитываются максимальная и минимальная ширины столбцов.
По умолчанию используется TableView.UNCONSTRAINED_RESIZE_POLICY
, в котором столбцы таблицы сначала будут использовать предпочтительную ширину.
Ответ 2
Ответ Улука Блай абсолютно правильный для кода.
Кроме того, используя Scenebuilder, убедитесь, что политика в раскрывающемся окне "Свойства" идентична (CONSTRAINED), и она должна отображаться в вашем файле FXML следующим образом:
<columnResizePolicy>
<TableView fx:constant = "CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
Ответ 3
Это было хорошо для меня в javafx 2.2
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);