これは、updateItemメソッドが呼び出されるのは、TreeCellのアイテムが変更された場合ではなく、置き換えられた場合のみであるためだと思います。必要なのは、アイテムのプロパティが変更されたことをTreeCellインスタンスに通知する方法です。
たとえば、ツリーセルのテキストを変更するためにメソッドsetTextを使用する代わりに、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());
}
}
}