Поскольку вопрос не содержит MCVE, я должен сделать некоторые предположения;Решение, которое я представляю, может не работать без изменений.Это мои предположения:
unmatchedBarcodeMap
не пусто - Контроллер правильно используется при загрузке fxml
- Поля содержат экземпляры, используемые в
TableView
, отображаемое на экране
PropertyValueFactory
использует методы получения или получения свойств для получения значений.Они недоступны для Map
:
Пусть <property>
обозначает строку, переданную PropertyValueFactory
и <Property>
той же строке, но с первым символом, преобразованным в верхний регистр:
PropertyValueFactory
ищет метод с именем <property>Property
, который возвращает ObservableValue
, содержащий значение, которое будет отображаться в столбце первым.Если такой метод существует, результат вызова метода для элемента строки возвращается из метода call
.Если этот метод недоступен, PropertyValueFactory
ищет метод с именем get<Property>
;Если этот метод доступен, результат вызова метода для элемента строки переносится в объект ObservableValue
и возвращается из метода call
.В противном случае возвращается null
, в результате чего получается пустая ячейка.
Вам нужно использовать MapValueFactory
вместо PropertyValueFactory
для извлечения значений из Map
s:
productNameCol.setCellValueFactory((Callback) new MapValueFactory("ProductName"));
...
Отображает результат вызова с использованием rowItem.get("ProductName")
в столбце productNameCol
.