Необходимо убедиться, что свойство graphic
ячейки обновляется правильно, независимо от элемента (или факта, что оно «отсутствует»).
В вашем случае вы неправильно обрабатываетеячейки, которые переходят от true
как элемент к false
как элемент: вы просто сохраняете рисунок для true
вместо его удаления.
Кроме того, я рекомендую сохранить ссылку на ImageView
, чтобы избежать повторного созданияэто:
Column.setCellFactory(new Callback<TableColumn<Person, Boolean>, TableCell<Spectrum, Boolean>>() {
@Override
public TableCell<Person, Boolean> call(TableColumn<Person, Boolean> param) {
return new TableCell<Person, Boolean>() {
private final ImageView image = new ImageView(IconResource.getImage(ICON.FLAG));
@Override
public void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
setGraphic(item == null || !item ? null : image);
}
};
}
});