2009-09-22 15 views
27

Ich möchte eine java.swing JComboBox mit Werten von Enum auffüllen.Poping Swing JComboBox von Enum

z.B.

public enum Mood { HAPPY, SAD, AWESOME; } 

und haben diese drei Werte füllen Sie eine Nur-Lese-JComboBox.

Danke!

Antwort

37

Versuch:

new JComboBox(Mood.values()); 
1

Die Lösung von @Pierre vorgeschlagen ist gut. Normalerweise verwenden Sie ein DefaultComboBoxModel oder ein ComboBoxModel oder Bindungen an das ComboBoxModel für komplexere Sachen.

Standardmäßig ist eine JComboBox nicht editierbar.

16

Wenn Sie nicht wollen (oder können) Änderung der Initialisierung mit Standardkonstruktors, dann können Sie setModel() Methode verwenden:

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

Hinweis [* Typ Inference für Generic Instance Creation *] (http: //docs.oracle.com/javase/7/docs/technotes/guides/language/type-inference-generic-instance-creation.html) und [generisches Modell] (http://docs.oracle.com/javase/ 7/docs/api/javax/swing/DefaultComboBoxModel.html), neu in Java 7. – trashgod