【发布时间】:2017-02-24 11:15:59
【问题描述】:
我有一个带有ComboBox 的表单,我想填充MyEnum 类型的可用值:
public enum MyEnum {
FIRST_CHOICE ("First choice"),
SECOND_CHOICE ("Second choice");
private String value;
MyEnum(String value) {
this.value = value;
}
public String toString() {
return value;
}
}
myComboBox.getItems().setAll(MyEnum.values());
然后,在做出选择并点击按钮之后,我想创建一个新的MyEnum 对象。我想出的想法是:
选项 1:
从 ComboBox 中获取值并使用 switch 语句,针对所采取的选择创建一个新的 MyEnum。
选项 2:
使字符串值与枚举值相同,并使用valueOf() 创建MyEnum:
public enum MyEnum {
FIRST_CHOICE ("FIRST_CHOICE"),
SECOND_CHOICE ("FIRST_CHOICE");
...
}
MyEnum myEnum = MyEnum.valueOf(myComboBox.getSelectionModel().getSelectedItem())
---------
所以第一个选项很糟糕,我知道。第二个稍微好一点,但不是那么用户友好(因为他会看到像“FIRST_CHOICE”这样的文字),我想还有更好的选择。我想以最好的方式做到这一点,尽可能地分离视图和模型,但我完全不知道如何实现。
【问题讨论】:
-
valueOf不会创建新的枚举常量。它返回现有的...
标签: java model-view-controller javafx