Dans cette fiche... |
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... |
Attention : lisez ceci avant de programmer des événements en Java 1.02.
// ------------------------------------------ // 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); } }
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(). |
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.