嗨,我在这个Cell Factory有一点问题:
private Callback<TableColumn<Member, String>,
TableCell<Member, String>> setPhotoCellFactory() {
Callback<TableColumn<Member, String>, TableCell<Member, String>> callback = new Callback<TableColumn<Member, String>, TableCell<Member, String>>() {
@Override
public TableCell<Member, String> call(TableColumn<Member, String> param) {
TableCell<Member, String> cell = new TableCell<Member, String>() {
@Override
protected void updateItem(String item, boolean empty) {
System.out.println(item);
super.updateItem(item, empty);
ImageView imageview = new ImageView();
imageview.setFitHeight(TABLE_IMAGE_MEMBER_HEIGHT);
imageview.setFitWidth(TABLE_IMAGE_MEMBER_WIDTH);
if(item != null) {
imageview.setImage(new Image(item));
setGraphic(imageview);
} else {
if(!empty) {
imageview.setImage(new Image(ImageFiles.GENERIC_MALE.toString()));
setGraphic(imageview);
} else {
setGraphic(null);
}
}
}
};
return cell;
}
};
return callback;
}
当Photo为null时,在Member对象中getter返回与其性别对应的图像。在这个回调中,似乎没有使用getter。 在这种情况下如何访问成员属性?
@EDIT
在会员班中:
public String getPhoto() {
if (photo.getValue() != null && !photo.getValue().equals("")) {
return photo.get();
} else if (getGender().equals(Gender.F)) {
return ImageFiles.GENERIC_FEMALE.toString();
} else {
return ImageFiles.GENERIC_MALE.toString();
}
}
添加CellValueFactory:
this.simPhotoColumn.setCellValueFactory(data -> data.getValue().photoProperty());
答案 0 :(得分:0)
好的,我找到了解决方案。我正在搜索如何在CellFactory中设置图像的错误。 响应是设置自定义CellValueFactory。
我被替换了这个:
this.simPhotoColumn.setCellValueFactory(data -> data.getValue().photoProperty());
by:
this.memberPhoto.setCellValueFactory(getPhotoValueFactory());
private Callback<TableColumn.CellDataFeatures<Member, String>, ObservableValue<String>> getPhotoValueFactory() {
Callback<TableColumn.CellDataFeatures<Member, String>, ObservableValue<String>> callback = param -> new ReadOnlyObjectWrapper<>(param.getValue().getPhoto());
return callback;
}