esperanto
interlingua
 

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