La classe StringTokenizer fait partie du package java.util. Elle permet de décomposer une chaîne de caractères en une suite de "mots" séparés par des "délimiteurs".
La classe StringTokenizer propose 3 constructeurs :
La classe StringTokenizer fournit deux méthodes importantes qui permettent d'obtenir les différentes parties d'une chaîne l'une après l'autre : la méthode hasMoreTokens indique s'il reste des éléments à extraire; la méthode nextToken renvoie l'élément suivant.
Exemple d'utilisation :
StringTokenizer st = new StringTokenizer("this is a test"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
Ce code fournit la sortie suivante :
this
is
a
test
Nous allons écrire une applet qui se contente de dessiner un disque coloré. Elle lira la couleur du fond et la couleur du disque dans les paramètres fournis par le fichier html.
Commençons par écrire l'applet sans tenir compte des paramètres fournis par le fichier html.
import java.applet.*; import java.awt.*; public class disque extends Applet { public void init() { //couleurs par défaut setBackground(Color.blue); setForeground(Color.yellow); } public void paint(Graphics g) { int rayon=getSize().height/4; int x=(getSize().width-2*rayon)/2; int y=(getSize().height-2*rayon)/2; g.fillOval(x,y,2*rayon,2*rayon); } }
Les paramètres seront associés aux mots "fond" et "disque". Les couleurs seront définies par trois entier séparés par des virgules. L'appel de l'applet dans le fichier html se fera donc de la façon suivante :
<APPLET CODE="dique.class" WIDTH="200" HEIGHT="200"> <PARAM NAME="fond" VALUE="255,0,0"> <PARAM NAME="disque" VALUE="128,255,128"> </APPLET>
La méthode init de l'applet va devoir récupérer les chaînes fournies par l'attribut VALUE et les transformer en objets de type Color. Nous écrirons une méthode couleur(String S) qui se chargera de cette tâche.
public void init() { String S; Color col; //couleurs par défaut setBackground(Color.blue); setForeground(Color.yellow); //lecture des paramètres S=getParameter("fond"); if (S!=null) { col=couleur(S); if (col!=null) setBackground(col); } S=getParameter("disque"); if (S!=null) { col=couleur(S); if (col!=null) setForeground(col); } }
La méthode couleur reçoit en paramètre une chaine contenant trois nombres entiers séparés par des virgules. Nous allons donc utiliser un objet de type StringTokenizer pour les extraire. Le résultat renvoyé par la méthode sera la couleur lorsque tout s'est bien passé et null lorsqu'une erreur s'est produite.
Color couleur(String S) { int r,g,b; Color col=null; StringTokenizer st=new StringTokenizer(S,",;"); try { r=Integer.parseInt(st.nextToken()); g=Integer.parseInt(st.nextToken()); b=Integer.parseInt(st.nextToken()); col=new Color(r,g,b); } catch (Exception e) {} return col; }
L'applet est maintenant en mesure de lire et de traduire les paramètres qui lui sont fournis dans le fichier html.