Erkennung der JComboBox-Bearbeitung

8

Ich habe eine JComboBox, einmal pro Sekunde möchte ich eine Reihe von Strings aus einer Datenbank abrufen und diese Strings auf den Inhalt der JComboBox und einen davon als den aktuell ausgewählten Wert setzen. Ich möchte aber auch, dass der Benutzer die JComboBox bearbeiten und der Datenbank einen Wert hinzufügen und als aktuellen Wert festlegen kann.

Ich möchte feststellen, wenn Zeichen in die JComboBox eingegeben werden, so dass ich einen Countdown zurücksetzen kann, der verhindert, dass die JComboBox aktualisiert wird, solange es nicht null ist. Mein erster Instinkt war, einen KeyListener zu verwenden, aber das Java-Tutorial in Kombinationsfeldern sagt das,

  

Obwohl JComboBox Methoden für die Registrierung von Listenern erbt   Ereignisse auf niedriger Ebene - Fokus-, Schlüssel- und Mausereignisse zum Beispiel - wir   empfehlen, dass Sie nicht auf Low-Level-Ereignisse in einem Kombinationsfeld warten.

Und sie sagen weiter, dass die gefeuerten Ereignisse sich je nach Aussehen und Verhalten ändern können.

    
user615457 21.01.2012, 00:03
quelle

2 Antworten

4

Dies ist ein wenig heikel, aber es sollte funktionieren, um die Dokument-Updates auf der Editor-Komponente (A JTextField) zu hören.

%Vor%

Diese * Update (DocumentEvent documentEvent) Methoden sollten für jedes Zeichen, das von der JComboBox eingegeben / gelöscht wird, aufgerufen werden.

    
Scott Faria 21.01.2012 00:15
quelle
2

Ich möchte hinzufügen, dass die Methode "changedUpdate" keine Benachrichtigung für Nur-Text-Dokumente auslöst. Wenn Sie eine Nur-Text-Textkomponente verwenden, müssen Sie insertUpdate und / oder removeUpdate verwenden.

Ich musste kürzlich einen Dokument-Listener verwenden, um eine Schaltfläche zu deaktivieren / aktivieren, wenn der Benutzer das Kombinationsfeld bearbeitet hat. Ich habe so etwas gemacht und sehr gut funktioniert:

%Vor%

Dann fügte ich diesen Listener wie folgt in das Kombinationsfeld ein:

%Vor%

Dies funktioniert, weil das mit dem Kombinationsfeld verknüpfte Dokument einfacher Text ist. Wenn ich ChangedUpdate verwendete, tat es das nicht.

    
hfontanez 20.10.2014 17:24
quelle

Tags und Links