# Inhalt einer JComboBox aktualisieren



## Samarek (15. Mai 2012)

Hallo,

ich kämpfe bei Swing Klassen immer ein wenig mit der Aktualisierung der Anzeige, das klappt irgendwie nie so richtig, jetzt habe ich folgendes Problem.

Ich habe 2 ComboBoxen (JComboBox), in einer kann man eine Kategorie auswählen und in der anderen soll man eine Unterkategorie auswählen können.
Aber wie es sich so begibt stehen in der zweiten Box immer die gleichen Unterkategorien drin, nämlich die die zu der Kategorie gehören die zuerst ausgewählt wurde.

Die erste JComboBox hat natürlich einen ActionListener und der wird auch ausgelöst wenn ich in der ersten JComboBox etwas auswähle, nur, wie gesagt, der Inhalt der zweiten JComboBox wird nicht aktualisiert.

Kann mir da mal jemand weiterhelfen?


----------



## 123456789 (15. Mai 2012)

Hallo!

Ich glaube das was du suchts ist ein ItemListener. Siehe: JComboBox: addItemListener(ItemListener lis) : JComboBoxjavax.swingJava by API

In der Methode: 

```
public void itemStateChanged(ItemEvent ie) {
      ....
}
```

aktualisierst du dann die andere ComboBox.

LG,


----------



## mla.rue (15. Mai 2012)

du brauchst keinen ItemListener
-> DefaultComboBoxModel (Java 2 Platform SE v1.4.2)

schonmal das angeschaut? Und natürlich, ohne Code was du gemacht hast, wirds schwierig was zu sagen


----------



## Samarek (15. Mai 2012)

Sollte es nicht reichen wenn ich ihm einen neuen Vektor als Grundlage für die Anzeige gebe?


```
box1.addActionListener(new Listener());
box2 = new JComboBox(vektor);

public class Listener implements ActionListener
{
     public void actionPerformed(ActionEvent evt)
     {
          box2 = new JComboBox(neuerVektor);
     }    
}
```

das ist im Grunde schon alles was passiert.


----------



## mla.rue (15. Mai 2012)

must du dem Model der ComboBox übergeben, nicht der Komponente selbst. Wie gesagt, schau dir DefaultComboBoxModel an. (wenn du allerdings gleich eine Lösung willst, brauchst du nur zu fragen)


----------



## Samarek (15. Mai 2012)

Einen anderen Inhalt in die ComboBox zu bringen ist doch eigentlich eine kleine, recht mundane Sache, das sollte sich doch im Grunde recht einfach machen lassen, halt ohne DefaultComboBoxModel.
Die richtigen Sachen sind ja sogar drin, er zeigt sie mir nur einfach nicht an.
Wie gesagt die UI zu aktualisieren ist halt mein Problem und nicht die Werte da reinzukriegen.


----------



## bERt0r (15. Mai 2012)

Nein du verstehst das grundlegende Prinzip nicht. Du weist deiner variable box ein neues ComboBox Objekt zu. Angezeigt wird aber immer noch das alte Objekt, das in deinem Frame per add Methode hinzugefügt wurde.
Grundsätzlich ist es äußerst selten notwendig, während der Laufzeit neue Komponenten zu erzeugen. Ein ComboBoxModel gibt es nicht zum Spaß. Das ist eben dafür da, den Inhalt von ComboBoxen zu verändern.
How to Use Combo Boxes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)


----------

