如何添加"空"选择ComboBox?

时间:2018-03-05 20:36:23

标签: javafx combobox

我有一个ComboBox填充了自定义对象。但是,我需要允许选择选择(或空值)。我尝试了comboBox.getItems().add(null),但没有添加空选择。

如何在顶部添加空白选项,基本上允许用户“取消选择"所有项目?

1 个答案:

答案 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}}