парадигма раньше.
я естьListView
что я работаю, чтобы добавитьContextMenu
к. у меня естьContextMenu
работает найти, но есть другая проблема.
мойsetCellFactory
код, используемый для настройки контекстных меню:
lvAppetites.setCellFactory(lv -> {
ListCell<Appetite> cell = new ListCell<>();
ContextMenu contextMenu = new ContextMenu();
MenuItem editAppetiteMenu = new MenuItem();
editAppetiteMenu.textProperty().bind(Bindings.format("Edit ..."));
editAppetiteMenu.setOnAction(event -> {
// Code to load the editor window
editAppetite(cell.getItem());
});
contextMenu.getItems().add(editAppetiteMenu);
MenuItem deleteAppetiteMenu = new MenuItem();
deleteAppetiteMenu.textProperty().bind(Bindings.format("Delete ..."));
deleteAppetiteMenu.setOnAction(event -> {
// Code to delete the appetite
});
contextMenu.getItems().add(deleteAppetiteMenu);
contextMenu.getItems().add(new SeparatorMenuItem());
MenuItem addAppetiteMenu = new MenuItem();
addAppetiteMenu.textProperty().bind(Bindings.format("Add New ..."));
addAppetiteMenu.setOnAction(event -> {
// Code to delete the appetite
});
contextMenu.getItems().add(addAppetiteMenu);
cell.textProperty().bind(cell.itemProperty().asString());
// If nothing selected, remove the context menu
cell.emptyProperty().addListener((obs, wasEmpty, isNowEmpty) -> {
if (isNowEmpty) {
cell.setContextMenu(null);
} else {
cell.setContextMenu(contextMenu);
}
});
return cell;
});
мойListView
доступен для поиска черезTextField
со слушателем; слушатель фильтрует элементы вListView
как пользователь печатает.
Проблема в том, что, поскольку список фильтруется, теперь отображаются все пустые ячейки.null
.
От прочтения другоговопросЯ уверен, чтоListView
все еще отображает графику для удаленных ячеек. Я знаю, как справиться с этим в ListView путем переопределенияupdateItem
метод, но как бы я справиться с этим изнутриsetCellFactory
метод вместо?
Это вообще возможно, или мне нужно будет изменить весь мойListView
?
Спасибо, как всегда, за всю вашу помощь!