Java KeyListener funktioniert erst nach Fensterwechsel?
Hallo, Ich habe ein Programm, in welchem ich einem JFrame einen KeyListener zugewiesen habe. Beim Start funktioniert dieser auch, jedoch nicht mehr, wenn ich durch einen Mausclick (MouseListener bei einem JLabel) Inhalt des JFrames ändere. Erst wenn ich einmal aus dem Fenster rausgehe und wieder drauf gehe, funktioniert der KeyListener wieder. Für mich ergibt das überhaupt keinen Sinn und ich finde seit 3 Stunden keine Lösung für das Problem.
1 Antwort
Der Listener fängt nur Ereignisse auf, wenn das Element dabei fokussiert ist. Bei dir wird das JFrame den Fokus an eine seiner Subkomponenten verlieren.
Du könntest einen eigenen KeyEventDispatcher registrieren und in dem die Key Events handhaben.
KeyboardFocusManager
.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new YourKeyEventDispatcher());
Oder du nutzt Key Bindings. Ein Anwendungsbeispiel habe ich hier schon einmal gezeigt.
Danke, der KeyEventDispatcher hat mein Problem gelöst.