2009-09-22 19 views
27

Me gustaría llenar un java.swing JComboBox con valores de Enum.Populating Swing JComboBox de Enum

p. Ej.

public enum Mood { HAPPY, SAD, AWESOME; } 

y tienen estos tres valores pueblan un solo lectura JComboBox.

Gracias!

Respuesta

37

intento:

new JComboBox(Mood.values()); 
1

La solución propuesta por @Pierre es buena. Usualmente usas un DefaultComboBoxModel o un ComboBoxModel o enlaces al ComboBoxModel para cosas más complejas.

Por defecto, un JComboBox no es editable.

16

Si no quiere (o no puede) el cambio de inicialización con el constructor por defecto, entonces se puede utilizar setModel() método:

JComboBox<Mood> comboBox = new JComboBox<>(); 
comboBox.setModel(new DefaultComboBoxModel<>(Mood.values())); 
+1

Nota [* Tipo de inferencia para genérico de creación de instancias *] (http: //docs.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html) y [modelo genérico] (http://docs.oracle.com/javase/ 7/docs/api/javax/swing/DefaultComboBoxModel.html), nuevo en Java 7. – trashgod