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

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

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

【问题讨论】:

    标签: javafx combobox


    【解决方案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 作为第一项,并根据原始列表进行更新,而不是使用占位符元素:stackoverflow.com/a/60580431/898747
    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多