2017-06-08 7 views
1

Ich habe ein Problem mit meinem JComboBox nicht die Änderungen im Modell reflektiert ...Java Swing - JComboBox nicht erfrischend

Im Modell habe ich Box Klasse, die eine Array Liste der Item s hält. Ich habe ein Combo-Box-Modell auf diese Weise definiert:

(Ich benutze NetBeans 'Design' Modus). Soweit ich weiß, sollte das Kombinationsfeld nach dem Festlegen des Modells auf diese Weise alle Änderungen in der Liste items und am Anfang der Anwendung widerspiegeln, es zeigt die Elemente der Liste item in der Tat richtig an.

Ich habe auch eine Schaltfläche Hinzufügen, um eine zufällige Instanz von Item in die items Liste hinzuzufügen.

private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {             
    box.addRandomItem(); 
}  

Die Methode addRandomItem() fügt einfach eine neue Instanz von Item auf die items Liste. Wenn ich auf die Schaltfläche Hinzufügen klicke, wird das neue zufällige Element korrekt zur items Liste hinzugefügt (ich kann es an der Konsole gedruckt sehen), aber auf der GUI-Ebene wird die Liste im Kombinationsfeld nicht aktualisiert, sodass ich die neu nicht sehen kann Artikel hinzugefügt.

Antwort

2

Sie sollten das neue Element manuell zum Modell hinzufügen, indem Sie addElement(E element) oder insertElementAt(E element, int index) verwenden.

Intern erstellt die DefaultComboBoxModel eine Kopie der Elemente, die Sie als Parameter im Konstruktor angeben. Daher gibt es keine Möglichkeit zu wissen, dass das ursprüngliche Array geändert wurde.