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

Warum reagiert mein KeyListener in meinem JFrame nicht?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 08:56:03423Durchsuche

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);
    }
}

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!

Stellungnahme:
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