Dans cette fiche...

<Retour>

Description de l'applet

Difficulté : Résultat
Dans certains cas de figure, vous serez amené à manipuler une liste d'objets. Par exemple, la liste des éléments d'un vecteur, la liste des applets placées sur une page HTML...

Les énumérations fournissent ce genre de listes.

Votre navigateur n'est pas compatible Java !

Le listing ci-dessous est une variante de celui qui affiche les éléments d'un vecteur.
Consultez cette fiche pour plus de détails. La variante se situe au niveau de l'affichage des objets contenus dans le vecteur : on utilise cette fois une énumération.

Listing de l'applet

// -----------------------------------------
// ENUM : ENUMERATIONS EN JAVA
// -----------------------------------------
import java.applet.*;
import java.awt.*;
import java.util.*;
public class Enum extends Applet
{
	// Déclaration d'un vecteur
	Vector v;
	// --------------------------
	// INITIALISATION DE L'APPLET
	// --------------------------
	public void init()
	{
		// Couleur de fond
		setBackground(Color.black);
		// Initialisation du vecteur
		v = new Vector();
		v.addElement("lundi");
		v.addElement("mardi");
		v.addElement("mercredi");
		v.addElement("jeudi");
		v.addElement("vendredi");
	}
	// ---------
	// AFFICHAGE
	// ---------
	public void paint(Graphics g)
	{
		String s;
		int i;
		Enumeration e;
		// Couleur du texte
		g.setColor(Color.orange);
		// Récupérer une liste des éléments du vecteur
		e = v.elements();
		i = 0;
		while (e.hasMoreElements())
		{
			g.drawString((String)e.nextElement(), 10, 15 + 10*i);
			i++;
		}
	}
}

Le listing en détail...

Les lignes non commentées ont déjà été traitées dans les exemples précédents.

import java.util.*;
Le package java.util est importé en début de listing pour permettre l'utilisation des objets Vector et Enumeration.
 
Enumeration e;
On déclare un objet Enumeration.
 
e = v.elements();
On initialise l'objet Enumeration, grâce à la méthode elements() de l'objet Vector v. Clair ?!

A la fin de cette opération, l'objet e contient une liste de tous les éléments du vecteur v.

 
i = 0;
while (e.hasMoreElements())
{
	g.drawString((String)e.nextElement(), 10, 15 + 10*i);
	i++;
}
Vous trouvez ci-dessus les 2 seules méthodes de l'objet Enumeration, à savoir :
  • hasMoreElements() qui indique si oui ou non (true ou false) l'énumération comporte d'autres éléments qui n'ont pas été lus
  • nextElement() qui donne le prochain élément de l'énumération.

La boucle while s'exécute donc, tant que l'énumération a d'autres éléments à fournir.

Quelques remarques :

  • La variable entière i sert surtout à gérer l'affichage (hauteur de la ligne). Elle n'intervient pas dans l'énumération.
  • La méthode nextElement() fournit un objet en résultat. Cet objet est quelconque, générique. Il faut donc faire un cast (ou conversion, en français), pour lui donner un type précis. D'où le (String) qui précède e.nextElemen(), puisque dans notre exemple on a stocké des chaînes de caractères dans le vecteur.
  • Les énumérations "s'auto-détruisent" en quelque sorte à la lecture : on les parcourt du début à la fin, dans l'ordre, sans pouvoir revenir en arrière. Il n'y en effet que les méthodes hasMoreElements() et nextElement() pour les manipuler.
 
Vous trouverez un autre exemple basé sur les énumérations, dans la fiche Lister les applets d'une page HTML.

Intégration de l'applet dans la page

Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :

<applet code="Enum.class" width=250 height=90>
Votre navigateur n'est pas compatible Java !
</applet>

Pour plus de précisions sur l'intégration d'une applet, cliquez ici.