|
Rendre une applet cliquable
Nous allons d'abord faire réagir une applet à un clic de souris. Lorsque l'on cliquera sur la zone de l'applet, un texte sera affiché.
Rappel important : le code qui suit utilise la version 1.0 du langage java. Le système utilisé pour la gestion des clics de souris a changé à partir de la version 1.1 du langage. Cependant, la version 1.0 tourne toujours parfaitement, aussi bien sur les anciens navigateurs que sur les plus récents.
mouseDown() et mouseUp()
Cliquer, c'est appuyer une fois sur le bouton de la souris (mouseDown) puis le relâcher (mouseUp). Il se produit donc deux événements, souvent à deux endroits différents, car la souris se déplace facilement.
Les méthodes mouseDown() et mouseUp() permettent de repérer tout cela : l'événement proprement dit et les coordonnées exactes de l'endroit où l'événement s'est produit.
Par exemple :
public boolean mouseUp(Event evt, int x, int y)
{
abscisse = x;
ordonnee = y;
return true;
}
Ce morceau de code (ce n'est pas une applet !) permet de récupérer l'abscisse et l'ordonnée de l'endroit où l'on a relâché le bouton de la souris.
Quelques éclaircissements
boolean
Les méthodes mouseDown() et mouseUp() retournent un booléen, c'est à dire qu'elles renvoient à l'applet l'une des valeurs true (oui, j'ai traité l'événement) ou false (non, je n'ai pas traité l'événement).
return true;
La méthode renvoie explicitement la valeur true, indiquant qu'elle a bien traité l'événement.
Une variable booléenne
Si notre applet peut savoir qu'on lui a cliqué dessus, et à quel endroit, grâce aux méthodes mouseDown() et mouseUp(), il faut encore trouver un moyen de passer cette information à d'autres parties du programme.
L'une des possibilités que nous avons, c'est de déclarer une variable booléenne [boolean dedans;] qui ne peut prendre que deux valeurs : true ou false. Si le clic a lieu, on attribue à cette variable la valeur true.
Voici le code de l'applet :
import java.applet.*;
import java.awt.*;
public class applet11 extends Applet
{
boolean dedans;
public void paint(Graphics g)
{
if (dedans)--- si la variable dedans a la valeur true
{
g.setColor(Color.black);
g.drawString("Oui", 10, 50);
}//if
}//paint
public boolean mouseDown(Event evt, int x, int y)
{
dedans = true;
repaint();--- la méthode paint() affiche "Oui"
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{
dedans=false;
repaint();--- la méthode paint() ne fait rien
return true;
}
}
Cliquez sur la zone de l'applet ci-dessous :
Le code prêt à l'emploi
Encore quelques éclaircissements
import java.awt.*;
Nous demandons là au programme de puiser dans une trousse à outils : awt = abstract window toolkit. Dans cette boîte à outils, il y a tout ce qu'il faut pour gérer les actions de la souris.
if (dedans)
C'est une manière abrégée d'écrire : if (dedans == true).
La variable dedans n'a la valeur "true" que lorsque l'on appuie sur le bouton de la souris dans la zone de l'applet. Si dedans a la valeur "false" (quand on ne fait rien, ou quand on relâche le bouton de la souris), la méthode paint() ne fait rien du tout. Si dedans a la valeur "true", la méthode paint() dessine le mot "Oui".
repaint();
Cette méthode relance la méthode paint () qui se trouve plus haut dans le programme.
|