我有一个列表视图,我正在向其中添加一个上下文菜单。我有“工作查找”上下文菜单,但有另一个问题。
MysetCellFactory
代码,用于设置上下文菜单:
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可以通过侦听器通过文本字段进行搜索;当用户键入时,侦听器会过滤列表视图中的项目。
现在的问题是,在筛选列表时,所有空单元格现在都显示为null。
通过阅读另一个问题,我非常确信ListView仍在显示已删除单元格的图形。我知道如何通过重写updateItem方法在ListView中处理这个问题,但是我应该如何在setCellFactory方法中处理这个问题呢?
这是可能的还是我需要重构整个列表视图?
一如既往地感谢您的帮助!
问题出在线路上
cell.textProperty().bind(cell.itemProperty().asString());
当单元格为空时,项将为null,因此绑定将(我相信)计算为字符串“null”。
尝试测试单元格是否为空或项是否为空,例如:。
cell.textProperty().bind(Bindings
.when(cell.emptyProperty())
.then("")
.otherwise(cell.itemProperty().asString()));
或者(感谢@fabian改进了这个版本)
cell.textProperty().bind(Bindings.createStringBinding(
() -> Objects.toString(cell.getItem(), ""),
cell.itemProperty()));
对于类中的方法,文档是这样说的: 取消此对话框,将其从屏幕上移除。可以从任何线程安全地调用此方法。请注意,当对话框被取消时,不应重写此方法来进行清理,而应在中实现此方法。 在我的代码中,我所做的就是调用来删除它。但是我没有做其他任何事情,甚至没有使用。因此,我问的是如何正确地删除以避免任何内存泄漏等。
我在使用org.apache.commons.io.FileUtils从img目录删除文件时遇到问题。我正在使用以下代码: 实际上,该代码是用来替换img目录中已有的图像文件。我需要删除所有以前存在的文件,名称是n.*,与新文件,例如n.png。如果我试图删除图像文件,我会得到变量成功的false值,并且文件不会被删除。但不包括图像文件,例如*.abc;*.ACD;*.ACDC等被成功删除。这个问
问题内容: 我正在尝试从ArrayList中删除一个对象。每个Item对象都有3个属性;1. itemNum 2.信息3.费用。我也有3个类,即1。Item类定义了存储在目录中的单个项目。2. Catalog类维护Item对象的列表。3带main方法的客户端类。我在Set类中具有设置并获取,在Catalog中具有ArrayList。在客户端中,提示我“输入要删除的itemNum。如何基于对item
本文向大家介绍java 如何实现正确的删除集合中的元素,包括了java 如何实现正确的删除集合中的元素的使用技巧和注意事项,需要的朋友参考一下 在java中如果我们需要遍历集合并删除其中的某些元素时,例如对于List来说,我们有三种办法。 1. 普通的for循环遍历并删除 main中调用 程序输出[1,2,3] 这是因为,删除时改变了list的长度。删除第一个2后,长度变为了3,这时list.ge
我有一个工作表,我需要根据单元格值删除行。。 要检查的单元格位于A列中。。 如果单元格包含“-”。。删除行 我找不到这样做的方法...我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但必须根据单元格值删除特定的行。 这里需要帮助。 更新 我拥有的数据样本