erbitte schnelle Hilfe mit ItemListener

kaice

Grünschnabel
Hallo, ich brauche rasche Hilfe mit einem ItemListener, der nicht so klappen will, wie er soll.

Code:
String[] sprachStrings = { "Deutsch", "English", "Français" };
    sprachComboBox = new JComboBox(sprachStrings);
    sprachComboBox.setSelectedIndex(0);
    
    sprachComboBox.addItemListener( new ItemListener() {
        public void itemStateChanged( ItemEvent e ) {
          JComboBox tempSpracheComboBox = (JComboBox)e.getSource();
          String selectedItem = (String) tempSpracheComboBox.getSelectedItem();
          
          
          if (e.getStateChange() == ItemEvent.SELECTED && "Deutsch".equals(selectedItem))
          {
        	  ausgewaehlteSprache = "de";
          }
          else if (e.getStateChange() == ItemEvent.SELECTED && "English".equals(selectedItem)) 
          {
        	  ausgewaehlteSprache = "en";
          }
          else if (e.getStateChange() == ItemEvent.SELECTED && "Français".equals(selectedItem))
          {
        	  ausgewaehlteSprache = "fr";
          }
          Locale.setDefault(new Locale(ausgewaehlteSprache));
        }
      });

Durch Auswahl einer der drei Sprachen in der ComboBox soll der String 'ausgewaehlteSprache' abgeändert werden. Jedoch bleibt diese Variable immer NULL. Ich bin schon seit Stunden am überlegen, was da falsch sein könnte.
Den Code habe ich mir aus, verschiedenen Beispielen zusammengebaut. Meine Javakenntnisse sind eher mäßig.
Ich wäre sehr froh, wenn mir jemand helfen könnte, indem er mir den Code korrigiert.

Mit freundlichen Grüßen
Kai
 
Werden die If-Abfragen überhaupt korrekt abgearbeitet?
Geht er in die if-Blöcke rein, oder überläuft er alle?
Mach doch einfach mal ein paar Ausgaben mit System.out.println()

Was steht zum Beispiel in selectedItem genau drin?
 
selectedItem steht drüber. Das hab ich nur gemacht, um nicht nach 'equals' soviel tippen zu müssen.
Nein er geht irgendwie nicht in die IFs, denn 'ausgewaehlteSprache' bleibt immer NULL :(
 
Versuch doch mal ob du mit einem ActionListener besser zurecht kommst.
Einfach nach dem auslösen den neuen ausgewählten Index abfragen.
 
Ja schon klar, dass das da drüber steht.
Aber was steht drin?
Gib's doch mal mit sysout aus!

getSelectedItem gibt dir ein Object zurück, das nicht notwendigerweise als String verwendbar sein muss. Darum gib das mal aus, was das tatsächlich ist.

Einmal nach String gecasted und einmal nicht gecasted.

Und schau bitte nach, ober er wirklich nicht reingeht.
Mach Kontrollausgaben (genereller Tipp)
 
Danke, genau das habe ich getan.
Dennoch funktioniet das nicht so, wie ich es will.

Code:
String[] sprachStrings = { "Deutsch", "English", "Français" };
    sprachComboBox = new JComboBox(sprachStrings);
    sprachComboBox.setSelectedIndex(0);
    sprachComboBox.addActionListener(this);

...


    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String auswahlComboBox = (String)cb.getSelectedItem();
        if (auswahlComboBox == "Deutsch")
        {
        	ausgewaehlteSprache = "de";
        }
        
        else if (auswahlComboBox == "Englisch")
        {
        	ausgewaehlteSprache = "en";
        }
        
        else if (auswahlComboBox == "Français")
        {
        	ausgewaehlteSprache = "fr";
        }
        	
        Locale.setDefault(new Locale(ausgewaehlteSprache));  
    }

Ich denke, damit bin ich der Sache schon näher gekommen. Allerdings gibt es immer noch Errors. grml. Mal sehen, was der Debugger sagt.
Für weitere Hilfestellungen wäre ich dankbar.
Danke schonmal an alle, die bislang geholfen haben.
 
Nachtrag.
Der String 'ausgewaehlteSprache' wird nun auch richtig gesetzt. Allerdings scheint er meine letzte Zeile, in der die Locale gesetzt werden soll zu übergehen.
 
Wenn ich Englisch auswähle, dann soll die Locale auf 'en' gesetzt werden. Durch einen Klick auf den Button daneben, wird ein neues Frame erzeugt. Dieser Frame ist aber dann noch auf Deutsch.
Keine Ahnung, wieso das so ist.
Ich hab gehört man könnte die Labels etc auf einem Frame 'refreshen'.
Wie genau geht das?
 

Neue Beiträge

Zurück