Отображение данных из наблюдаемого списка в табличном представлении javafx - PullRequest
0 голосов
/ 28 мая 2019

у меня есть этот код

ObservableList data = FXCollections.observableArrayList();
data.addAll(itemNumber, "Not Verified", "");

mItemNoColumn.setCellValueFactory (value -> SimpleObjectProperty<>(data.get(0)));
mStatusColumn.setCellValueFactory (value -> SimpleObjectProperty<>(data.get(1)));

mTableView.getItems().add(data);

Предположим, что все переменные уже объявлены и инициализированы.

Вывод, полученный этим кодом в табличном представлении, заключается в получении только последнего значенияObservableList и не все необходимые данные.

Но когда я печатаю список наблюдаемых в консоли, все необходимые данные печатаются правильно.

Ожидаемый результат в табличном представлении должен быть всепредметы внутри наблюдаемого списка

1 Ответ

1 голос
/ 28 мая 2019

Фабрика значений ячеек используется для каждой ячейки в 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 один раз .

...