基于枚举的组合框

Enum based Combobox

cmbSablonSecim = new ComboBox<>();
cmbSablonSecim.setItems(EnumSablonSecim.values());

我的组合框 --> TUMU,GRAFIK,DAGILIM

我想用 Enum->islemAdi

填充我的组合框

组合框 --> Tümü,Grafik,Dağılım (Enum->islemAdi)

public enum EnumSablonSecim {
    TUMU(0, "Tümü"),
    GRAFIK(1, "Grafik"),
    DAGILIM(2, "Dağılım")
    ;

    private final Integer islemKodu;
    private final String islemAdi;

    private EnumSablonSecim(Integer islemKodu, String islemAdi) {
        this.islemKodu = islemKodu;
        this.islemAdi = islemAdi;
    }

    public Integer getIslemKodu() {
        return islemKodu;
    }

    public String getIslemAdi() {
        ResourceBundle messages = I18n.getInstance(this.getClass());
        if (messages.containsKey(islemAdi)) {
            return messages.getString(islemAdi);    
        } else {
            return islemAdi;
        }
    }

    public static EnumSablonSecim get(Integer islemKodu) {
        for (EnumSablonSecim enumSablonSecim : EnumSablonSecim.values()) {
            if (enumSablonSecim.islemKodu == islemKodu) {
                return enumSablonSecim;
            }
        }
        return null;
    }
}

我的组合框必须 return (islemAdi)。这可能吗?谢谢...

ComboBox::setItemLabelGenerator

您是问是否可以将 islemAdi 字段显示为组合框中的标签?

您可以指定代码以生成用于显示枚举中每个项目的标签。为你的 getter 打电话 ComboBox::setItemLabelGenerator. Pass a method reference。 Vaadin 然后根据需要调用此方法来显示每个项目。

cmbSablonSecim.setItemLabelGenerator(EnumSablonSecim::getIslemAdi);

请参阅手册中的 Showing a List of Data with Data Providers