JComboBox Tasteneingabe

Moltar

Mitglied
Hallo,

ich möchte in meinem Programm eine JComboBox verwenden, bei der man wahlweise einen Wert mit der Maus auswählen kann, oder durch Tastendruck zu einem passenden Wert springen kann.

Das habe ich auf zwei Varianten versucht:
Code:
JComboBox combo = new JComboBox(elemArray);
combo.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		if(e.getID()== ActionEvent.ACTION_PERFORMED) {
			MyMessage.showInfo("Test");
		}
	}
});
und:
Code:
JComboBox combo = new JComboBox(elemArray);
combo.addItemListener(new ItemListener() {
	public void itemStateChanged(ItemEvent e) {
		if(e.getID() == ItemEvent.ITEM_STATE_CHANGED) {
			MyMessage.showInfo("Test");
		}
	}
});

elemArray ist ein int[].
Die Auswahl mit der Maus funktioniert problemlos. Wenn ich aber per Tastendruck wählen will, dann funktioniert das nicht.
Beispiel:
Ich gebe 15 ein, bei Eingabe der 1 springt er zum nächsten Element, das mit 1 beginnt und gibt die Meldung "Test" aus.
Das gleiche passiert, wenn ich die JComboBox aufklappe und mit den Pfeiltasten durch die Elemente schalte.
Wenn ich die Ausgabe der Meldung aus dem Listener entferne, kann ich durch Eingabe von 15 zwar zum Element 15 springen, aber dann passiert logischerweise nichts mehr.

Wie kann man es realisieren, dass erst bei Auswahl eines Elements (durch Klick oder Enter-Taste) das Event ausgelöst wird und nicht schon beim Anspringen eines Elementes?

Grüße
Moltar
 
Hallo Moltar,

Wie kann man es realisieren, dass erst bei Auswahl eines Elements (durch Klick oder Enter-Taste) das Event ausgelöst wird und nicht schon beim Anspringen eines Elementes?

am Einfachsten kannst Du das realisieren indem Du erst die Auswahl in der Combobox vornimmst und dann das eigentliche Event durch einen weiteren Button (á la "Übernehmen" oder "OK") oder ähnliches auslöst. Der Wert der Box ändert sich bei Tastatureingabe ja mehrfach und es gibt kein Kriterium, ob der endgültige erreicht ist.

Grüße
Inter
 
Zurück