JavaFX8 - Как удалить TableCell, который имеет всплывающую подсказку?
Я хочу удалить TableCells из моего TableView. Поэтому я называю эту строку:
table.getItems().remove(item);
TableCell удаляется правильно, но всплывающая подсказка будет показана на следующей TableCell. Например: когда я удаляю первую ячейку, всплывающая подсказка будет отображаться во второй ячейке (которая теперь является первой). Как мне избежать этой проблемы?
Моя CellFactory выглядит так:
column.setCellFactory(c -> {
TableCell<DataItem, DataItem> cell = new TableCell<DataItem, DataItem>() {
@Override
protected void updateItem(DataItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item.getName());
if (item.getDescription() != null && !item.getDescription().isEmpty()) {
setTooltip(new Tooltip(item.getDescription()));
}
}
}
};
return cell;
});
1 ответ
Решение
Обрабатывать случай, когда item
нулевой. Если вы думаете с точки зрения "удаления данных из модели таблицы" вместо "удаления ячеек" (вы вообще не удаляете ни одной ячейки, вы просто меняете данные, отображаемые существующими ячейками), это должно иметь смысл,
column.setCellFactory(c -> {
TableCell<DataItem, DataItem> cell = new TableCell<DataItem, DataItem>() {
@Override
protected void updateItem(DataItem item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setText(null);
setTooltip(null);
} else {
setText(item.getName());
if (item.getDescription() != null && !item.getDescription().isEmpty()) {
setTooltip(new Tooltip(item.getDescription()));
} else {
// may need something here, depending on your application logic...
}
}
}
};
return cell;
});