Swing を使用していて、コマンド プロンプトや Web フォームを使用していない場合は、enum インスタンスを JComboBox に実際に渡すことができます。ユーザーが選択すると、文字列と列挙型の間で変換する必要なく、列挙型インスタンスを直接取得できます。これには、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);
}
}
型キャストなし、文字列マッチングなし。超安全。