Фабрика значений ячеек используется для каждой ячейки в TableColumn
. Это означает, что когда вы явно используете data
(который является только одной строкой вашей таблицы) на фабриках, вы случайно связали каждую ячейку (то есть каждую строку) с этим одним data
объектом. Объект CellDataFeatures
, переданный фабрике, дает вам доступ к элементу строки, для которого пытается получить значение. Ваш код должен выглядеть примерно так:
mItemNoColumn.setCellValueFactory(features -> Bindings.valueAt(features.getValue(), 0));
mStatusColumn.setCellValueFactory(features -> Bindings.valueAt(features.getValue(), 1));
Я использовал Bindings.valueAt(ObservableList,int)
, потому что он обновится, если вы измените значение по этому индексу ObservableList
. Однако, если вам это не нужно, вы можете продолжить перенос значения в ObjectProperty
.
Вы не предоставляете много контекста, поэтому я не могу быть уверен, где этот код вызывается, но помните, что вам нужно только установить cellValueFactory
один раз .