Dans cette fiche...

<Retour>

Description de l'applet

Difficulté : Résultat
Comment, grâce aux événements de souris, tracer une droite dans la zone d'applet.

Cliquez à un endroit de l'applet, puis déplacez la souris pour tester...

Votre navigateur n'est pas compatible Java !

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

Listing de l'applet

// ------------------------------------------
// TRACEDROITE : EVENEMENTS SOURIS (JDK 1.02)
// ------------------------------------------
import java.applet.*;
import java.awt.*;
public class TraceDroite extends Applet
{
	int x1, x2, y1, y2;
	int SourisX, SourisY;	
	public void init()
	{
		// Couleur du fond de l'applet
		setBackground(Color.black);
		// Initialiser les coordonnées des points
		// Si ces valeurs sont à -1, les points ne sont pas définis.
		x1 = x2 = y1 = y2 = -1;	
		// Position de la souris
		SourisX = SourisY = 0;
	}
	
	// --------------------
	// GESTION DE LA SOURIS
	// --------------------	
	// On relâche le bouton de la souris la souris pour marquer un point
	public boolean mouseUp(Event evt, int x, int y)
	{
		// Si le premier point est indéfini, l'initialiser
		// De même si les 2 points sont définis (on repart à 0)
		if ((x1 == -1) || (x2 != -1))
		{
			x1 = x;
			y1 = y;
			x2 = y2 = -1;
		}
		else
		{
			// Fixer le 2ème point
			x2 = x;
			y2 = y;
		}	
		repaint();
		return true;
	}	
	// Déplacement de la souris
	public boolean mouseMove(Event evt, int x, int y)
	{
		// Mémoriser la position de la souris
		SourisX = x;
		SourisY = y;		
		repaint();
		return true;
	}
	// ---------
	// AFFICHAGE
	// ---------
	public void paint(Graphics g)
	{
		// Ecrire et tracer en blanc
		g.setColor(Color.white);
		if (x1 != -1)
			if (x2 != -1)
				g.drawLine(x1, y1, x2, y2);
			else
				g.drawLine(x1, y1, SourisX, SourisY);
	}
}

Le listing en détail...

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

public boolean mouseUp(Event evt, int x, int y)
{
	if ((x1 == -1) || (x2 != -1))
	{
		x1 = x;
		y1 = y;
		x2 = y2 = -1;
	}
	else
	{
		x2 = x;
		y2 = y;
	}	
	repaint();
	return true;
}	
Le principe : on réagit au relâchement du bouton de la souris (si on relâche le bouton, c'est qu'on termine un clic :o))
On définit les coordonnées du premier point (x1, y1) ou, si c'est déjà fait, celles du second point (x2, y2).
Le repaint() lance ensuite le tracé, qui est pris en charge par la méthode paint().

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="TraceDroite.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.