Heim > Java > javaLernprogramm > Warum reagiert mein KeyListener in meinem JFrame nicht?

Warum reagiert mein KeyListener in meinem JFrame nicht?

Linda Hamilton
Freigeben: 2024-11-11 08:56:03
Original
454 Leute haben es durchsucht

Why is My KeyListener Not Responding in My JFrame?

Nicht reagierender KeyListener für JFrame: Verwendung eines KeyEventDispatcher

Sie erleben einen nicht reagierenden KeyListener, da der Fokus möglicherweise nicht auf dem JFrame liegt. Um dieses Problem zu beheben, sollten Sie erwägen, dem KeyboardFocusManager einen separaten KeyEventDispatcher hinzuzufügen.

Im folgenden Codebeispiel wird eine MyDispatcher-Klasse definiert und dem KeyboardFocusManager hinzugefügt:

public class MyFrame extends JFrame {    
    private class MyDispatcher implements KeyEventDispatcher {
        @Override
        public boolean dispatchKeyEvent(KeyEvent e) {
            if (e.getID() == KeyEvent.KEY_PRESSED) {
                System.out.println("tester");
            } else if (e.getID() == KeyEvent.KEY_RELEASED) {
                System.out.println("2test2");
            } else if (e.getID() == KeyEvent.KEY_TYPED) {
                System.out.println("3test3");
            }
            return false;
        }
    }
    public MyFrame() {
        add(new JTextField());
        System.out.println("test");
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.addKeyEventDispatcher(new MyDispatcher());
    }

    public static void main(String[] args) {
        MyFrame f = new MyFrame();
        f.pack();
        f.setVisible(true);
    }
}
Nach dem Login kopieren

Dieser Dispatcher verarbeitet alle Tasten Ereignisse unabhängig vom Komponentenfokus, Ausgabe von Meldungen an die Konsole. Dieser Ansatz stellt sicher, dass Ihr KeyListener Tastatureingaben empfängt, auch wenn der Fokus nicht direkt auf dem JFrame liegt.

Das obige ist der detaillierte Inhalt vonWarum reagiert mein KeyListener in meinem JFrame nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage