public class EnumComboBoxModel<E extends Enum<E>> extends ListComboBoxModel<E>
A ComboBoxModel implementation that safely wraps an Enum. It allows the developer to directly use an enum as their model for a combobox without any extra work, though the display can can be further customized.
The simplest usage is to wrap an enum
inside the
EnumComboBoxModel
and then set it as the model on the combo
box. The combo box will then appear on screen with each value in the
enum
as a value in the combobox.
ex:
enum MyEnum { GoodStuff, BadStuff };
...
JComboBox combo = new JComboBox();
combo.setModel(new EnumComboBoxModel(MyEnum.class));
By using generics and co-variant types you can make accessing elements from the model be completely typesafe. ex:
EnumComboBoxModel<MyEnum> enumModel = new EnumComboBoxModel<MyEnum1>(
MyEnum1.class);
MyEnum first = enumModel.getElement(0);
MyEnum selected = enumModel.getSelectedItem();
Since the exact toString()
value of each enum constant may not
be exactly what you want on screen (the values won't have spaces, for
example) you can override to toString() method on the values when you declare
your enum. Thus the display value is localized to the enum and not in your
GUI code. ex:
private enum MyEnum {GoodStuff, BadStuff;
public String toString() {
switch(this) {
case GoodStuff: return "Some Good Stuff";
case BadStuff: return "Some Bad Stuff";
}
return "ERROR";
}
};
Note: if more than one enum constant returns the same String
via
toString()
, this model will throw an exception on creation.Modifier and Type | Field and Description |
---|---|
private Class<E> |
enumClass |
private static long |
serialVersionUID |
private Map<String,E> |
valueMap |
data, selected, UPDATE
listenerList
Constructor and Description |
---|
EnumComboBoxModel(Class<E> en)
Creates an
EnumComboBoxModel for the enum represent by the
Class en . |
Modifier and Type | Method and Description |
---|---|
void |
setSelectedItem(Object anItem)
Set the selected item.
|
actionPerformed, getElementAt, getSelectedItem, getSize
addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addListDataListener, removeListDataListener
private static final long serialVersionUID
public EnumComboBoxModel(Class<E> en)
EnumComboBoxModel
for the enum represent by the
Class
en
.en
- the enum class typeIllegalArgumentException
- if the Enum.toString
returns the same value for more
than one constantpublic void setSelectedItem(Object anItem)
ListDataListener
s that the contents have changed.setSelectedItem
in interface ComboBoxModel
setSelectedItem
in class ListComboBoxModel<E extends Enum<E>>
anItem
- the list object to select or null
to clear the
selectionWebARTS Library Licensed Under the GNU - General Public License. Other Libraries licensed under their respective Open Source Licenses