我有一个ComboBox
填充了自定义对象。但是,我需要允许选择否选择(或空值)。我尝试了comboBox.getItems().add(null)
,但没有添加空选择。
如何在顶部添加空白选项,基本上允许用户“取消选择"所有项目?
答案 0 :(得分:2)
您可以添加占位符元素。您只需要测试引用相等性,而不是检查取消选择的项目。根据类设计,您可能需要使用自定义单元工厂来显示此项目的无文本:
final CustomItem emptyPlaceholder = new CustomItem(null);
ComboBox<CustomItem> combo = new ComboBox<>();
combo.getItems().addAll(emptyPlaceholder, new CustomItem("foo"), new CustomItem("bar"));
combo.setCellFactory(lv -> new ListCell<CustomItem>() {
@Override
protected void updateItem(CustomItem item, boolean empty) {
super.updateItem(item, empty);
setText((empty || item == null || item == emptyPlaceholder)
? ""
: item.getText());
}
});
combo.setButtonCell(combo.getCellFactory().call(null));
{{1}}