JComboBox ist editable und eingegebenen Text auslesen bei focusLost()

  • Themenstarter Themenstarter Gelöschtes Mitglied 56712
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 56712

Gast
Guten Tag
Wie lese ich den eingegebenen Text bei selectedIndex = -1 -> aus?
Gibt immer einen leeren String zurück???

Wenn ich als ersten Eintrag "Bitte Auswählen / Erfassen" eingebe und diesen mit .selectedIndex = 0 anzeigen lasse funktioniert das. Sobald ich auch nur einen Buchstabe ändere wird der Index auf -1 gesetzt und wenn ich mit JComboBox.getEditor().getItem().toString den Text holen will, wird nur ein leere String zurück gegeben. Ebenso bei JComboBox.getSelectedItem()!

Wenn ich mit der Enter-Taste bestätige, krieg ich den geänderten Text mit JComboBox.getEditor().getItem().toString() korrekt zurück.
Wenn ich aber mit der TAB-Taste zum nächsten Eingabefeld springe (focusLost(FocusEvent e)) wird meine Eingabe gelöscht und
entsprechend ist der Rückgabetext = "" (leer).

Wie muss ich da vorgehen?

Beide Variante versucht:
Java:
myCombo.getEditor().getEditorComponent().addFocusListener(new FocusAdapter() {
    public void focusLost(FocusEvent e) {
        String valTxt = myCombo.getEditor().getItem().toString();
        System.out.println("valTxt = " + valTxt);
    }
});
und (darauf wird nicht reagiert):
Java:
myCombo.addFocusListener(new FocusAdapter() {
    public void focusLost(FocusEvent e) {
        String valTxt = myCombo.getSelectedItem();
        System.out.println("valTxt = " + valTxt;
    }
});
 
Zuletzt bearbeitet von einem Moderator:
Hat sich ERLEDIGT (Gelösst).

Da an Index -1 zwar Text eingegeben werden kann und dort auch auf: keyPressed, keyTyped und keyReleased reagiert wird,
habe ich mir eine Hilfsvariable (String) erstellt, welche nach jedem keyEvent den vorhandenen Text ausliest.

Wenn bei focusLost() die Hilfsvariable == null ist, dann kann ich mit:
Java:
myCombo.getEditor().getEditorComponent().addFocusListener(new FocusAdapter() {
    public void focusLost(FocusEvent e) {
        String valTxt = myCombo.getEditor().getItem().toString();
        System.out.println("valTxt = " + valTxt);
    }
});
den Text auslesen.

Vielen Dank.
 

Zurück
Oben