[英]JavaFX Binding String to TreeCell Factory Properly
我遇到一个问题,当我展开和展开树单元时。 我绑定的文本永远不会消失。.这可能是什么原因?
这是我的代码
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());
}
}
}
};
});
如果单元格为空,则该项也为null
。 但是,仅当if (entry != null)
时才执行所有逻辑,即,如果单元格为空或item为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());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.