Nous allons créer une applet qui va réagir à l'appui sur des touches du clavier. Elle permettra d'afficher un mot de 10 lettres. Pour permettre cette opération nous utiliserons l'interface KeyListener.
L'interface KeyListener permet à une classe de répondre aux évènements liés au clavier (appui sur une touche, relachement, ...) Elle est définie dans le package java.awt.event qu'il faut donc importer. Elle contient les méthodes suivantes :
public void keyTyped(KeyEvent e) { //Invoked when a key has been typed. //This event occurs when a key press is followed by a key release. } public void keyPressed(KeyEvent e) { //Invoked when a key has been pressed. } public void keyReleased(KeyEvent e) { //Invoked when a key has been released. }
Ces méthodes ont comme paramètre un objet de type KeyEvent; celui-ci
possède des méthodes permettant de savoir quelle touche a été utilisée.
On trouve en particulier :
- getKeyChar() qui renvoie le caractère associé à la touche.
- getKeyCode() qui renvoie un code sous forme d'entier de type int
pour les touches qui ne sont pas associées à un caractère : flèches,
F1, F2, ...., Suppr, etc...
Les codes renvoyés par getKeyCode() correspondent à des constantes définies dans la classe KeyEvent. On a par exemple : VK_CANCEL (touche Echap), VK_ENTER (touche Entrée), VK_UP (flèche haut), etc... Il suffit de consulter la documentation du JDK (classe KeyEvent) pour obtenir la liste complète des codes utilisables.
Créons une applet nommée testclavier qui permet à l'utilisateur d'entrer un mot de 10 lettres au clavier.
On importe les packages nécessaires et on déclare l'utilisation de l'interface KeyListener.
import java.awt.*; import java.awt.event.*; public class testclavier extends java.applet.Applet implements KeyListener { .... }
L'applet testclavier utilisera 1 champ unique sous forme de
String qui contiendra le mot de 10 lettres à afficher.
On déclare donc ce champ et on écrit la méthode paint qui
l'utilise.
String S=""; public void paint(Graphics g) { g.drawString("Ecrire un mot de 10 lettres...",10,30); g.drawString(S, 10, 60); }
Pour pouvoir gérer les évènements clavier il est nécessaire de déclarer un écouteur (classe qui implémente l'interface KeyListener). Dans notre cas c'est l'applet elle-même qui fournira l'écouteur. Cette déclaration peut se faire dans la méthode init :
public void init() { addKeyListener(this); }
Les évènements clavier ne parviennent à l'applet que lorsque celle-ci a le focus. Cela se produit lorsqu'on clique sur sa surface, mais l'applet peut peut aussi demander le focus au système en utilisant la méthode requestFocus(). C'est ce que nous ferons dans la méthode start().
public void start() { requestFocus(); }
Nous n'utiliserons que la méthode keyPressed qui enregistrera le caractère sur lequel l'utilisateur a appuyé. Ceci nous donne :
// Saisie des touches tapées au clavier public void keyPressed(KeyEvent evt) { char Caract = evt.getKeyChar(); if (S.length()<10) if (Caract!=0) { S = S + Caract; repaint(); } } public void keyTyped(KeyEvent evt) { } public void keyReleased(KeyEvent evt) { }
La méthode keyPressed récupère le caractère envoyé et l'ajoute à la chaîne à afficher si celle-ci ne contient pas encore 10 caractères.
L'applet testclavier étant complètement écrite, il reste à la compiler et à la tester.