嗨,我在这个 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 为空时,getter 返回对应于他的性别的 Image。在这个回调中,似乎没有使用 getter。在这种情况下我如何访问成员财产?
@编辑
在成员类中:
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());
好的,我找到了解决方案。我的错误是我在 CellFactory 中搜索如何设置图像。响应是设置自定义 CellValueFactory。
我被替换了这个:
this.simPhotoColumn.setCellValueFactory(data -> data.getValue().photoProperty());
经过 :
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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句