Ich habe ein Panel mit ein paar Textfeldern und einem editierbaren JComboBox
verwendet, um eine Suche durchzuführen. Ich möchte, dass alle so funktionieren, als würde ich die Suchschaltfläche darunter drücken, wenn ich die Eingabetaste drücke. Dies funktioniert gut für eine JTextField
mit einer ActionListener
. Ich möchte jedoch nur die JComboBox
die Suche starten, wenn Enter gedrückt wird und die Dropdown-Liste nicht angezeigt wird. I.e. Wenn der Benutzer die Eingabetaste drückt, um eine Option im Dropdown auszuwählen, sollte nichts passieren.Editierbare JComboBox: Bestimmen, ob die Eingabetaste gedrückt wird, während sie in der Dropdown-Auswahl ignoriert wird?
Wie würde ich dieses Verhalten erreichen?
Ich habe versucht zu überprüfen getActionCommand()
und es zeigt entweder "comboBoxEdited"
oder "comboBoxChanged"
, wenn das Ereignis ausgelöst wird. "comboBoxEdited"
wird ausgelöst, wenn nach dem Auswählen einer Option die Eingabetaste gedrückt wird und wenn Sie im bearbeitbaren Feld die Eingabetaste drücken. "comboBoxChanged"
wird ausgelöst, wenn zwischen den Optionen gewechselt wird, sowie kurz vor "comboBoxEdited"
, wenn nach dem Bearbeiten des Textes Enter gedrückt wird.
Ich versuchte einen hässlichen Hack, wo ich die vorherige ActionCommand
speichern, aber es ist nicht perfekt, da der Benutzer zweimal nach der Eingabe von Text manuell drücken muss.
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("comboBoxEdited") &&
!combohack.equals("comboBoxChanged")) {
combohack="";
//PERFORM SEARCH!
}
combohack=e.getActionCommand();
}
Ich versuchte weiterhin meinen Hack noch hässlicher zu machen, indem ein KeyListener
als auch das Hinzufügen der Zeichenfolge zurückgesetzt, wenn tatsächliche Buchstaben, wo gedrückt, aber das half nicht.
Irgendwelche Ideen?
Was ist der Unterschied zwischen dem Benutzer, der während der Bearbeitung des Feldes [Enter] drückt, und dem Benutzer, der ein Element aus dem Drop-down-Menü auswählt? – MadProgrammer
@MadProgrammer Der Benutzer möchte vielleicht etwas in andere Suchfelder eingeben, indem er auf diese ein Tabstopp einlegt, bevor die Suche ausgeführt werden soll. Es ist normal für die meisten Leute, [Enter] zu drücken, wenn sie eine Option mit den Pfeiltasten auswählen (obwohl Sie [Tab] drücken könnten). Die Anwendung ist nicht für die Verwendung der Maus gedacht. – Kilgore