我遇到了一个问题,当我扩展并展开一个树状单元时。我绑定的文本永远不会消失。这可能是什么原因?
这是我的代码
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());
}
}
}
};
});
答案 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());
}
}