如何将“空”选择添加到 ComboBox?

Posted

技术标签:

【中文标题】如何将“空”选择添加到 ComboBox?【英文标题】:How to add "empty" selection to ComboBox? 【发布时间】:2018-03-05 20:36:22 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

您可以创建一个额外的列表,其中包含 null 作为第一项,并根据原始列表进行更新,而不是使用占位符元素:***.com/a/60580431/898747

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

ComboBox与空项目?

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

如何使用 Powershell 将 ComboBox 选定文件附加到 TextBox?

Kendo ComboBox - 如何根据其文本()而不是值()选择选项?

通过单击按钮向 ComboBox 添加值

ComboBox 如何动态赋值 C#