Wert in der ComboBox auslesen

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich habe für Cracks wahrscheinlich eine ziemlich einfache Frage. Wie manche von Euch schon wissen, befülle ich meine ComboBox mit Werten aus der Datenbank. Der Benutzer muss sich dann für die jeweilige Abteilung entscheiden. Damit mein Programm dementsprechend reagieren kann muss ich den angeklickten Wert auslesen und erstmal in eine String Variable überführen. Und genau da ist der Wurm drin!
Ich hab mich jetzt schon mit Javainsel beschäftigt und auch schon selber rumgespielt.
Als Methode habe ich auf alle Fälle mal:

Code:
jComboBox.addItemListener(new java.awt.event.ItemListener() 
{
     public void itemStateChanged(java.awt.event.ItemEvent e) 
     {
     }
});
Wie gesagt die Übergabe in eine String-Variable macht Probleme. Ich bekomme ständig Fehlermeldungen das ich keine Objekte einem String zu weisen kann!
Grüße
 
Wie du in der API nachlesen kannst, liefert getSelectedItem() ein Object zurück. Deshalb musst du - je nachdem, was du zu Beginn in deine JComboBox gestopft hast - casten. Bei dir dürftens Strings sein.

Code:
String selectedItem = (String)jComboBox.getSelectedItem();
 
Liefert doppelten Wert beim Auslesen

Hi matdacat,
danke Dir. Das Auslesen klappt jetzt auf alle Fälle schon. Jedoch gibt es jetzt ein
weiteres Problem.
Meine ComboBox enthält die Abteilungen A
B
C
Wenn ich jetzt die Abteilung B mit der Maus anklicke schreibt er in die Variable
(Konsolenausgabe)

BB statt B

Warum schreibt er es doppelt rein und wie kann ich es verhindern? So bringt es mir nichts, da ich mit dieser Variablen wiederrum ein SQL-Statement füllen muss!


Code:
jComboBox.addItemListener(new java.awt.event.ItemListener() 
{
    public void itemStateChanged(java.awt.event.ItemEvent e) 
   {
	gruppenauswahl = null;
	gruppenauswahl = (String)jComboBox.getSelectedItem(); 
	System.out.print(gruppenauswahl);
	gruppenauswahl = null;
     }
});
 
Vermutlich wird dein Eventlistener zweimal aktiv. Schreib mal
Code:
System.out.println(gruppenauswahl);
, um das zu überprüfen.
 
Hallo,

Das "Problem " liegt im ItemEvent . Es ruft den ItemListener sowohl bei SELECTED als auch bei DESELECTED auf. Dies kannst Du Dir sichtbar machen, wenn Du in den Listener einfach mal schreibst:
Code:
System.out.println(e.getStateChange());
Es wird also einmal eine 1für SELECTED und eine 2 für DESELECTED ausgegeben (oder umgekehrt ;-))

Und das kannst Du ausnutzen, indem Du einfach eines von beiden ignorierst.
Beispiel:
Code:
System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");

MfG
 
Zurück