Le keylistener

labypro Messages postés 2 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Je suis en Terminale S en option ISN (Informatique et Sciences du Numérique).

Je fais de la programmation en java et j'aimerais juste savoir ce qu'est un keylistener ?
Merci d'avance.

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Lorsque tu as une interface graphique, tu peux l'utiliser avec la souris ou le clavier, ce qui provoque un "événement". Java va alors chercher qui est concerné par cet événement (par exemple, sur quel bouton on a cliqué) et lui demander de le gérer.

    Un KeyListener permet de gérer un événement de type clavier, si on ajout un KeyListener à un composant graphique et qu'un événement clavier concerne ce composant, Java va appeler la méthode concernée en lui passant en paramètre l’événement en question.

    Exemple simple : j'ai une fenêtre (vide, qui ne fait rien), quand j'appuie sur la touche Echap je veux qu'elle se ferme.

    import java.awt.event.*;
    
    import javax.swing.JFrame;
    
    public class Test {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("Test");
            frame.setSize(200, 200);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            frame.addKeyListener(new KeyListener() {
                @Override
                public void keyReleased(KeyEvent e) {
                    System.out.println(e);
                    if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
                        System.out.println("Echap : STOP");
                        frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
                    }
                }
    
                public void keyPressed(KeyEvent e) {}
                public void keyTyped(KeyEvent e) {}
            });
        }
    }

    Remarque : pour fermer la fenêtre j'ai générer moi même un nouvel événement "WINDOW_CLOSING" qui est déjà géré par Java pour fermer proprement la fenêtre.

    Sur le même principe, on pourrait ajouter un WindowListener pour afficher l'arrivée de cet événement.

            frame.addWindowListener(new WindowListener() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.out.println(e);
                }
    
                public void windowActivated(WindowEvent e) {}
                public void windowOpened(WindowEvent e) {}
                public void windowIconified(WindowEvent e) {}
                public void windowDeiconified(WindowEvent e) {}
                public void windowDeactivated(WindowEvent e) {}
                public void windowClosed(WindowEvent e) {}
            });

    Le tutoriel officiel :
    0