JavaFX正确绑定到TreeCell Factory的字符串

时间:2016-06-10 18:14:29

标签: java javafx

我遇到了一个问题,当我扩展并展开一个树状单元时。我绑定的文本永远不会消失。这可能是什么原因?

这就是我得到的 enter image description here

这是我的代码

        treeView.setCellFactory(t -> {

                return new TreeCell<Entry>() {

                    @Override
                    protected void updateItem(Entry entry, boolean empty) {
                        super.updateItem(entry, empty);

                        if (entry != null) {

                            if (empty) {
                                setText(null);
                                setGraphic(null);
                            } else {

                                if (entry.getImage() != null) {

                                    Image image = FXUtils.toFXImage(entry.getImage());

                                    setGraphic(new ImageView(image));

                                } else {
                                    setGraphic(null);
                                }

                                textProperty().bind(entry.nameProperty());

                            }


                        }

                    }

                };

            });

1 个答案:

答案 0 :(得分:0)

如果单元格为空,则该项目也为null。但是,如果单元格为空或项目为(entry != null),则仅执行null,即从不执行所有逻辑。此外,即使你修复了这个错误,这也应该失败,因为你永远不会解除绑定textProperty,但可以为空单元格设置。将您的updateItem方法更改为以下内容:

@Override
protected void updateItem(Entry entry, boolean empty) {
    super.updateItem(entry, empty);

    textProperty().unbind();

    if (empty || entry == null) {
        setText(null);
        setGraphic(null);
    } else {
        if (entry.getImage() != null) {
            Image image = FXUtils.toFXImage(entry.getImage());
            setGraphic(new ImageView(image));
        } else {
            setGraphic(null);
        }

        textProperty().bind(entry.nameProperty());
    }

}