Как установить список карты в табличном представлении javafx - PullRequest
0 голосов
/ 12 октября 2018

В следующих фрагментах кода показаны объявления полей и порядок создания таблицы.

Скажите, пожалуйста, что не так.Данные не отображаются.

@FXML
private TableColumn<Map<String, Object>, String> productNameCol ;

@FXML
private TableColumn<Map<String,Object>, String> requestedBarcodeCol;

@FXML
private TableColumn<Map<String,Object>, String> pickedBarcodeCol;
productNameCol.setCellValueFactory(new PropertyValueFactory<Map<String,Object>,String>("ProductName"));
requestedBarcodeCol.setCellValueFactory(new PropertyValueFactory<Map<String,Object>,String>("ActualBarcode"));
pickedBarcodeCol.setCellValueFactory(new PropertyValueFactory<Map<String,Object>,String>("PickedBarcode"));
requestedQuantityCol.setCellValueFactory(new PropertyValueFactory<Map<String,Object>,String>("ActualQuantity"));
actualQuantityCol.setCellValueFactory(new PropertyValueFactory<Map<String,Object>,String>("PickedQuantity"));


unMatchDataTableView.setItems(FXCollections.observableArrayList(unmatchedBarcodeMap));

1 Ответ

0 голосов
/ 12 октября 2018

Поскольку вопрос не содержит 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.

...