私は作成しようとしていて、TreeTableView
販売値ファクトリーをに設定しようとしてい ます
@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
と、この例外が Long 値でのみ表示される理由は?
ここにメソッド全体があります:
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()));