Editierbare JComboBox bei Fokuserhalt den ganzen Text markieren.

JavaRentner

Aktives Mitglied
Guten Tag Wissende.
Tut mir leid, dass ich Euch schon wieder belästigen muss.

Folgender Code zeigt keine reaktion:
Java:
addFocusListener(new FocusAdapter() {
    @Override
    public void focusGained(FocusEvent e) {
        getEditor().selectAll();
    }
});

Wenn ich aber auf den Text doppelklicke wird mir der ganze Text markiert.
Heisst für mich, dass es auch bei Fokuserhalt gehen müsste.
Komme nur nicht dahinter WIE?

Bei einem JTextField funktioniert textfield.selectAll();
oder:
textfield.setSelectionStart(n);
textfield.setSelectionEnd(<länge des Textes>);

Vielen Dank
 
Vielen Dank @mihe7
Funktioniert SUPER!

Wenn ich aber einen Eintrag aus dem DropDown-Menü wähle blinkt der Cursor am Ende des neuen Text.
d.H. der Text ist nicht mehr selektiert.

Gibt es eine Möglichkeit, wenn der Text über das DropDown (glaube es heisst PopupMenu) geändert wurde
wieder den ganzen Text in getEditor().getEditorComponent() auzuwählen?
Oder ist das nicht vorgesehen?

Noch besser wäre so etwas wie selectionStart() und selectionEnd().
 
Zuletzt bearbeitet:
Gibt es eine Möglichkeit, wenn der Text über das DropDown (glaube es heisst PopupMenu) geändert wurde
wieder den ganzen Text in getEditor().getEditorComponent() auzuwählen?

Wenn per DropDown ein Element ausgewählt wird, dann wird der ItemListener aufgerufen:

public void addItemListener(ItemListener aListener)
Adds an ItemListener.
aListener will receive one or two ItemEvents when the selected item changes.

Hier musst du dann vermutlich noch das ItemEvent auswerten um zu prüfen, um was für ein Event es genau ging (getStateChange Wert prüfen, siehe dazu einfach https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/java/awt/event/ItemEvent.html)
 
✅ Vielen Dank
für Deine Hilfe aber für mich wird es etwas zu Umfangreich!
Ich werde mit der Lösung aus #2 leben und hoffen dass es der User so akzeptieren kann.

Trotzdem sehr vielen Dank!

Für mich ist der Thread gelösst.
 
Meinst Du so etwas in der Richtung?
Java:
box.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            box.getEditor().selectAll();
        }
    }
});
 

Zurück
Oben