Une zone de texte
Cette étape est en quelque sorte une parenthèse : nous allons ajouter une zone de texte à l'applet, de manière à éviter d'utiliser la méthode repaint() pour tester les clics de souris.
TextField
L'instruction suivante permet de déclarer un objet TextField :
TextField T = new TextField("oui", 5);
Le texte "oui" apparaîtra par défaut dans la zone de texte. Cette zone sera longue de 5 caractères.
Si l'on ne veut pas voir apparaître de texte par défaut, on peut simplement écrire
TextField T = new TextField(5);
On peut aussi déclarer une chaîne de caractères vide (String t = new String("");), puis lui allouer une valeur (t = "Oui";), puis affecter cette chaîne à la zone de texte avec la méthode setText() :
String t = new String("");
TextField T = new TextField(t, 5);
t = "Oui";
T.setText(t);
add() et init()
Ensuite, il faut placer cette zone de texte sur l'applet. Cela se fait par la méthode add(), de cette manière :
add(T);
Il faut noter que, avec cette méthode, on ne peut pas placer la zone de texte à un endroit bien précis de l'applet. La zone de texte apparaîtra après les éléments déjà insérés avec cette méthode.
Il faut noter également que cette méthode doit figurer à l'intérieur de la méthode init() qui est appelée au chargement de l'applet :
import java.awt.*;
public class applet13 extends java.applet.Applet
{
String t = new String("");
TextField T = new TextField(t, 5);
public void init()
{
t = "Non !";
T.setText(t);
add(T);
}
}
Et voici le résultat :
Le code prêt à l'emploi
Application à l'applet du rectangle cliquable : au lieu de lancer la méthode repaint(), le clic lance la méthode T.setText().
import java.applet.*;
import java.awt.*;
public class applet14 extends Applet
{
Rectangle r = new Rectangle(10,30,20,20);--- l'ordonnée est abaissée
boolean dedans;
String t = new String("");
TextField T = new TextField(t, 5);
public void init()
{
add(T);
}
public void paint(Graphics g)
{
g.setColor(Color.black);
g.fillRect(r.x,r.y,r.width,r.height);
}
public boolean mouseDown(Event evt, int x, int y)
{
dedans =(r.inside(x,y)) ? true : false;
if (dedans)
{
t="Oui";
T.setText(t);
}
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{
t="Non";
T.setText(t);--- le texte Non est envoyé dès que le bouton de la souris est relâché
return true;
}
}
Et voici le résultat :
Le code prêt à l'emploi
|