Java 基于枚举的组合框

Java 基于枚举的组合框,java,enums,vaadin,Java,Enums,Vaadin,我的组合框必须返回(islemAdi)。是否可能?谢谢您…组合框::setItemLabelGenerator 您是否询问是否可以在组合框中将islemAdi字段显示为标签 您可以指定代码以生成用于显示枚举中每个项的标签。呼叫传递一个给你的getter。然后,Vaadin根据需要调用此方法来显示每个项目 public enum EnumSablonSecim { TUMU(0, "Tümü"), GRAFIK(1, "Grafik"), DAGILIM(2, "Dağıl

我的组合框必须返回(islemAdi)。是否可能?谢谢您…

组合框::setItemLabelGenerator
您是否询问是否可以在组合框中将
islemAdi
字段显示为标签

您可以指定代码以生成用于显示枚举中每个项的标签。呼叫传递一个给你的getter。然后,Vaadin根据需要调用此方法来显示每个项目

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;
    }
}
请参阅手册中的。

组合框::setItemLabelGenerator
您是否询问是否可以在组合框中将
islemAdi
字段显示为标签

您可以指定代码以生成用于显示枚举中每个项的标签。呼叫传递一个给你的getter。然后,Vaadin根据需要调用此方法来显示每个项目

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

参见手册。

我不太明白你的问题,tümü,Grafik,Dağılım是枚举类型,但islemAdi是字符串,对吗?您想在组合框中输入这4个值吗?如果是,您可以为示例创建一个数组列表,并将其添加为ComboboxYes的值。是否可以不使用数组(使用直接枚举?)我不太理解您的问题,tümüm,Grafik,Dağlım是枚举类型,但islemAdi是字符串,对吗?您想在组合框中输入这4个值吗?如果是,您可以为示例创建一个数组列表,并将其添加为ComboBox的值。是否可以不使用数组(使用直接枚举?)。进一步说明:ComboBox的类型仍然是
ComboBox
,而不是
ComboBox
,但您可以选择如何使用
setItemLabelGenerator(…)
表示每个项。您仍然使用OP在问题中所写的相同行设置项目:
cmbSablonSecim.setItems(EnumSablonSecim.values())。无需创建字符串数组。进一步说明:组合框的类型仍然是
ComboBox
,而不是
ComboBox
,但您可以选择如何使用
setItemLabelGenerator(..)
表示每个项。您仍然使用OP在问题中所写的相同行设置项目:
cmbSablonSecim.setItems(EnumSablonSecim.values())。不需要创建字符串数组。
cmbSablonSecim.setItemLabelGenerator(EnumSablonSecim::getIslemAdi);