Woher weiß ich, wann der Text einer editierbaren JComboBox geändert wurde?

ich habe einbearbeitbar JComboBox, in der ich bei jeder Änderung des Texts eine Aktion ausführen möchte, entweder durch Eingabe oder Auswahl. In diesem Fall ist der Text ein Muster, und ich möchte überprüfen, ob das Muster gültig ist, und die Übereinstimmungen anzeigen, die zu einigen Testdaten führen.

Nachdem Sie das Offensichtliche getan haben, fügen Sie einen ActionHandler hinzu, und ich habe festgestellt, dass das Ereignis beim Tippen bestenfalls unzuverlässig ausgelöst wird (Auswahl ist in Ordnung). Und wenn estut Als Ergebnis der Eingabe wird der abgerufene Text (mit getEditor (). getItem ()) ausgelöst, da getSelectedItem () den Text nur dann abruft, wenn er aus der Liste ausgewählt wurde) scheint der Text zu sein, wie er war, als das letzte Ereignis ausgelöst wurde - Das heißt, es fehlt immer der Charakter, der unmittelbar vor dem Auslösen des Aktionsereignisses eingegeben wurde.

Ich hatte erwartet, dass das Aktionsereignis nach einer kurzen Verzögerung (500 ms bis 1 Sekunde) ausgelöst wird, aber es scheint sofort beim Eingeben ausgelöst zu werden (falls es überhaupt ausgelöst wird).

Die einzige praktikable Alternative, die ich mir vorstellen kann, ist, einfach einen 1-Sekunden-Timer bei gewonnenem Fokus zu starten, ihn bei verlorenem Fokus zu töten und die Arbeit als Timer-Aktion auszuführen, wenn sich der Inhalt vom letzten Mal unterscheidet.

Irgendwelche Gedanken oder Vorschläge?

Die Code-Schnipsel sind nicht besonders interessant:

find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
    System.out.println("Find: "+find.getEditor().getItem());
    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage