如何在ComboBox中添加“空”选择?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ComboBox中添加“空”选择?相关的知识,希望对你有一定的参考价值。

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

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

答案

您可以添加占位符元素。您只需要测试引用相等性,而不是检查取消选择的项目。根据类设计,您可能需要使用自定义单元工厂来显示此项的无文本:

public class CustomItem {

    private final String text;

    public CustomItem(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

}
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));

以上是关于如何在ComboBox中添加“空”选择?的主要内容,如果未能解决你的问题,请参考以下文章

ComboBox与空项目?

ExtJS ComboBox:允许用户不选择任何值(空)

如何设置combobox 下拉框的内容

easyui combobox如何搞一个没有值的选项。

C#如何设置combobox下拉框的内容

jquery easyui combobox 添加添加选择项