我认为这是因为 updateItem 方法仅在 TreeCell 的项目被替换而不是修改时才被调用。您需要一种方法来通知 TreeCell 实例其项目的属性已更改。
例如,不要使用 setText 方法来修改 treecell 的文本,而是尝试将 textProperty 绑定到模型对象的所需属性。当然,您需要更新模型以使用 JavaFX 属性和绑定 另一种解决方案可能是使用旧样式的 PropertyChangeListener。
如果您想要示例,我可以尝试提供一个。
编辑:一个小例子。我修改了情节叶子的文本。当然,您需要将 EpsiodeDetails 类的情节和标题属性移动到 javafx 样式的属性中。
@Override
protected void updateItem(ITVShowItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
if (item instanceof Show) {
//nothing
} else if (item instanceof Season) {
Season season = (Season) item;
setText("Season " + season.getSeason());
} else if (item instanceof Episode) {
Episode episode = (Episode) item;
this.textProperty().bind(Bindings.concat(episode.getDetails().episodeProperty(), " - ", episode.getDetails().titleProperty()));
//setText(episode.getDetails().getEpisode() + " - " + episode.getDetails().getTitle());
}
}
}