Maison > Java > javaDidacticiel > Pourquoi mon KeyListener ne répond-il pas dans mon JFrame ?

Pourquoi mon KeyListener ne répond-il pas dans mon JFrame ?

Linda Hamilton
Libérer: 2024-11-11 08:56:03
original
454 Les gens l'ont consulté

Why is My KeyListener Not Responding in My JFrame?

KeyListener qui ne répond pas pour JFrame : utilisation d'un KeyEventDispatcher

Vous rencontrez un KeyListener qui ne répond pas, car le focus n'est peut-être pas mis sur le JFrame. Pour résoudre ce problème, envisagez d'ajouter un KeyEventDispatcher distinct au KeyboardFocusManager.

Dans l'exemple de code suivant, une classe MyDispatcher est définie et ajoutée au KeyboardFocusManager :

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);
    }
}
Copier après la connexion

Ce répartiteur gère toutes les clés événements quel que soit le focus du composant, imprimant des messages sur la console. Cette approche garantit que votre KeyListener recevra une saisie au clavier même si le focus n'est pas directement sur le JFrame.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal