如果您使用的是 Swing 而不是命令提示符或 Web 表单,您实际上可以将枚举实例传递给 JComboBox。当用户进行选择时,您将直接获得 Enum 实例,而无需在 String 和 Enum 之间进行转换。这样做的好处是您不必担心更改枚举名称或大写/小写错误。
例子:
public class Enums
{
public enum Days{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
public String toString() {
//return user-friendly name, or whatever else you want.
//for complex rendering, you need to use cell renderer for the combo box
return name().substring(0,1) + name().toLowerCase().substring(1, name().length());
};
}
public static void main(String[] args) {
JFrame frame = new JFrame("Enum test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JComboBox<Days> combo = new JComboBox<>(Days.values());
combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED){
Days selected = combo.getItemAt(combo.getSelectedIndex());
System.out.println(selected);
}
}
});
frame.add(combo);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
没有类型转换,没有字符串匹配。超级安全。