Dans cette fiche...

<Retour>

Description de l'applet

Difficulté : Résultat
La gestion de la souris et du clavier se fait par événements.

Déplacez la souris au-dessus et hors de l'applet pour tester l'exemple.

Votre navigateur n'est pas compatible Java !

Attention : lisez ceci avant de programmer des événements en Java 1.02.

Listing de l'applet

// -----------------------------------------
// EVTSOURIS1 : EVENEMENTS SOURIS (JDK 1.02)
// -----------------------------------------
import java.applet.*;
import java.awt.*;
public class EvtSouris1 extends Applet
{
	boolean SourisEntree;
	boolean SourisDeplacee;
	int SourisX, SourisY;	
	public void init()
	{
		// Couleur du fond de l'applet
		setBackground(Color.black);
		// Initialiser les variables
		SourisEntree = SourisDeplacee = false;
	}

	// --------------------
	// GESTION DE LA SOURIS
	// --------------------	
	// Entrée de la souris dans la zone d'applet
	public boolean mouseEnter(Event evt, int x, int y)
	{
		SourisEntree = true;
		repaint();
		return true;
	}
	// Sortie de la souris de la zone d'applet
	public boolean mouseExit(Event evt, int x, int y)
	{
		SourisEntree = false;
		repaint();	
		return true;
	}	
	// Déplacement de la souris
	public boolean mouseMove(Event evt, int x, int y)
	{
		SourisDeplacee = true;
		SourisX = x;
		SourisY = y;
		repaint();		
		return true;
	}

	// ---------
	// AFFICHAGE
	// ---------	
	public void paint(Graphics g)
	{
		// Ecrire en blanc
		g.setColor(Color.white);	
		// Est-ce que la souris est dans l'applet ?
		if (SourisEntree)
			g.drawString("La souris est dans la zone d'applet...", 10, 20);
		else
			g.drawString("La souris est hors de l'applet...", 10, 20);
		// Ecrire en orange
		g.setColor(Color.orange);
		// Est-ce que la souris se déplace ?
		if (SourisDeplacee)
			g.drawString("La souris est en x=" + SourisX + " et y=" + SourisY, 10, 40);
		// Réinitialiser le déplacement
		SourisDeplacee = false;
	}
}

Le listing en détail...

Comme d'habitude, seules les nouveautés sont commentées.

boolean SourisEntree;
boolean SourisDeplacee;
int SourisX, SourisY;	
4 variables qui vont servir à suivre les déplacements de la souris :
  • SourisEntree = true :  la souris est au-dessus de la zone d'applet (false sinon)
  • SourisDeplacee = true : la souris a été déplacée (false sinon)
  • SourisX et SourisY : les coordonnées de la souris à un moment donné.
 
public boolean mouseEnter(Event evt, int x, int y)
{
	SourisEntree = true;
	repaint();
	return true;
}
Les événements sont en fait des fonctions appelées automatiquement par le système.
A vous de programmer l'intérieur de ces fonctions, de façon à faire réagir votre applet à la souris.

Un événement est donc une fonction publique, devant renvoyer un booléen (true ou false).
En général, si vous gérez l'événement vous-même, vous renverrez la valeur true.

Ici, on considère l'événement mouseEnter(), qui se produit au moment où la souris entre dans la zone d'applet.
L'événement reçoit 3 valeurs, qui sont :

  • evt : l'objet Evénement (Event) qui décrit ce qui s'est produit
  • x,y : les coordonnées de la souris au moment où l'événement s'est produit.

Dans notre cas, on se contente de mémoriser que la souris est entrée (SourisEntree = true), et de demander de redessiner l'applet (ce qui provoque indirectement un appel à la méthode paint() écrite plus bas).
Si vous oubliez le repaint(), la mise à jour de l'affichage ne se fera pas en temps réel.

Enfin, comme l'événement a été traité, on renvoie la valeur Vrai par : return true;

 
public boolean mouseExit(Event evt, int x, int y)
{
	SourisEntree = false;
	repaint();	
	return true;
}	
Même principe que plus haut : l'événement mouseExit() se produit au moment où la souris sort de la zone d'applet. Facile, non ?
 
public boolean mouseMove(Event evt, int x, int y)
{
	SourisDeplacee = true;
	SourisX = x;
	SourisY = y;
	repaint();		
	return true;
}
Encore le même schéma. On en profite cette fois pour mémoriser les coordonnées de la souris, qui seront affichées ensuite par la méthode paint().
Reste à écrire la méthode paint(), qui se contente d'afficher les informations recueillies dans les événements.

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="EvtSouris1.class" width=250 height=100>
Votre navigateur n'est pas compatible Java !
</applet>

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