Я пытаюсь создать TreeTableView
и пытаюсь установить распродажу стоимость завода понесовместимым типа возвращаемого ReadOnlyLongWrapper в лямбда-выражении
@FXML
private TreeTableColumn<Good, Long> folderId;
здесь:
folderId.setCellValueFactory((TreeTableColumn.CellDataFeatures<Good, Long> param) ->
new ReadOnlyLongWrapper(param.getValue().getValue().getFolderId()));
Я получаю это подчеркнет красное с ошибкой описанных в названии. getFolderId
в Good
классе является следующее:
public Long getFolderId() {
return folderId;
}
того же метод отлично работает для строки или булевых значений, но капли исключения, упомянутое в названии и следующий на компиляции:
incompatible types: bad return type in lambda expression
javafx.beans.property.ReadOnlyLongWrapper cannot be converted to javafx.beans.value.ObservableValue<java.lang.Long>
как получить ObservableValue<java.lang.Long>
вместо ReadOnlyLongWrapper
и почему это исключение появляется только с длинными значениями?
здесь весь метод:
goodsPane.setCenter(goodTreeTableView);
List<Good> goodAndFoldersList = goodsService.getGoods();
List<Good> goods = new ArrayList<Good>();
List<Good> roots = new ArrayList<Good>();
for (Good good: goodAndFoldersList){
if (good.isIs_folder()) {
roots.add(good);
}else {
goods.add(good);
}
}
TreeItem<Good> rootItem = new TreeItem<>();
for (Good root: roots){
Long folderId = root.getId();
TreeItem<Good> rootTreeItem = new TreeItem<>(root);
for (Good good: goods){
if (good.getFolderId() == folderId){
TreeItem<Good> goodTreeItem = new TreeItem<>(good);
rootTreeItem.getChildren().add(goodTreeItem);
}
}
rootItem.getChildren().add(rootTreeItem);
}
goodTreeTableView.setRoot(rootItem);
goodName.setCellValueFactory((TreeTableColumn.CellDataFeatures<Good, String> param) ->
new ReadOnlyStringWrapper(param.getValue().getValue().getName()));
folderId.setCellValueFactory((TreeTableColumn.CellDataFeatures<Good, Long> param) ->
new ReadOnlyLongWrapper(param.getValue().getValue().getFolderId()));
is_folder.setCellValueFactory((TreeTableColumn.CellDataFeatures<Good, Boolean> param) ->
new ReadOnlyBooleanWrapper(param.getValue().getValue().isIs_folder()));