细胞工厂的财产

香草

嗨,我在这个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章