org.jdesktop.swingx.combobox
Class EnumComboBoxModel<E extends Enum<E>>

java.lang.Object
  extended by javax.swing.AbstractListModel
      extended by org.jdesktop.swingx.combobox.EnumComboBoxModel<E>
All Implemented Interfaces:
Serializable, ComboBoxModel, ListModel

public class EnumComboBoxModel<E extends Enum<E>>
extends AbstractListModel
implements ComboBoxModel

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.

Simple Usage

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

Type safe access

By using generics and co-variant types you can make accessing elements from the model be completely typesafe. ex:


  EnumComboBoxModel enumModel = new EnumComboBoxModel(MyEnum1.class);
  MyEnum first = enumModel.getElement(0);
  MyEnum selected = enumModel.getSelectedItem();

Advanced Usage

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

See Also:
Serialized Form

Field Summary
 
Fields inherited from class javax.swing.AbstractListModel
listenerList
 
Constructor Summary
EnumComboBoxModel(Class<E> en)
           
 
Method Summary
 E getElementAt(int index)
          Returns the value at the specified index.
 E getSelectedItem()
          Returns the selected item
 int getSize()
          Returns the length of the list.
 void setSelectedItem(Object anItem)
          Set the selected item.
 
Methods inherited from class javax.swing.AbstractListModel
addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.ListModel
addListDataListener, removeListDataListener
 

Constructor Detail

EnumComboBoxModel

public EnumComboBoxModel(Class<E> en)
Method Detail

getSize

public int getSize()
Description copied from interface: javax.swing.ListModel
Returns the length of the list.

Specified by:
getSize in interface ListModel
Returns:
the length of the list

getElementAt

public E getElementAt(int index)
Description copied from interface: javax.swing.ListModel
Returns the value at the specified index.

Specified by:
getElementAt in interface ListModel
Parameters:
index - the requested index
Returns:
the value at index

setSelectedItem

public void setSelectedItem(Object anItem)
Description copied from interface: javax.swing.ComboBoxModel
Set the selected item. The implementation of this method should notify all registered ListDataListeners that the contents have changed.

Specified by:
setSelectedItem in interface ComboBoxModel
Parameters:
anItem - the list object to select or null to clear the selection

getSelectedItem

public E getSelectedItem()
Description copied from interface: javax.swing.ComboBoxModel
Returns the selected item

Specified by:
getSelectedItem in interface ComboBoxModel
Returns:
The selected item or null if there is no selection