Le keylistener

Fermé
labypro Messages postés 2 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 6 avril 2016 - 6 avril 2016 à 18:25
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 6 avril 2016 à 20:22
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

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 6/04/2016 à 20:24
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