Applet Interactive

Nous allons étudier les événements qui se produisent dans un composant graphique (l'applet) et comment réagir à ces événements.

changement au clic

Source de Rectangle6.java
import java.awt.*;
public class Rectangle6 {
  double x, y, largeur, hauteur;
  Color couleur;
  Rectangle6(double valX, double valY,
             double valL, double valH,
             Color c) {
    x = valX; y = valY; 
    largeur = valL; hauteur = valH;  
    couleur = c; 
  }
  void setPosition(double valX, double valY){
    x = valX;
    y = valY;
  }
  boolean estDans(double valX, double valY){
    return ((x<=valX)&&(x+largeur>=valX)
           &&(y<=valY))&&(y+hauteur>=valY);
  }
  void dessiner(Graphics g) {
    g.setColor(couleur);
    g.fillRect((int)x, (int)y, 
            (int)largeur, (int)hauteur);
  }
}

Source de Prog67.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Prog67 
       extends Applet
       implements MouseListener {
  Rectangle6 rectRouge, rectBleu;
  boolean affiche;
  public void init() {
    addMouseListener(this);
    affiche = true;
    rectRouge =new Rectangle6(30,30,50,80,Color.red);
    rectBleu =new Rectangle6(30,30,50,80,Color.blue);
  }
  public void paint(Graphics g) {
    if (affiche)
      rectRouge.dessiner(g);
    else
      rectBleu.dessiner(g);
  }
  public void mouseClicked(MouseEvent e) {
    affiche = ! affiche;
    repaint();
  }
  public void mouseEntered(MouseEvent e) {}
  public void mouseExited(MouseEvent e) {}
  public void mousePressed(MouseEvent e) {}
  public void mouseReleased(MouseEvent e) {}
}


placer un dessin à l'endroit cliqué

Source de Prog36.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Prog36
       extends Applet
       implements MouseListener {
  Rectangle6 rect;
  public void init() {
    rect = new Rectangle6(30,30,50,80,Color.yellow);
    addMouseListener(this);
  }
  public void paint(Graphics g) {
      rect.dessiner(g);
  }
  public void mouseClicked(MouseEvent e) {
    int x,y;
    x = e.getX();
    y = e.getY();
    rect.setPosition(x,y);
    repaint();
  }
  public void mouseEntered(MouseEvent e) {}
  public void mouseExited(MouseEvent e) {}
  public void mousePressed(MouseEvent e) {}
  public void mouseReleased(MouseEvent e) {}
}

les événements et leurs méthodes associées

Source de Prog37.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Prog37 
       extends Applet
       implements MouseListener, KeyListener,
                  MouseMotionListener 
{
  String message = "aucun";
  public void init() {
    addMouseListener(this);
    addMouseMotionListener(this);
    addKeyListener(this);
  }
  public void paint(Graphics g) {
    	g.drawString(message, 20, 50); }
  public void mouseClicked(MouseEvent e) {
	message = "mouseClicked"; 
    repaint(); }
  public void mouseEntered(MouseEvent e) {
	message = "mouseEntered"; 
    repaint(); }
  public void mouseExited(MouseEvent e) {
	message = "mouseExited"; 
    repaint(); }
  public void mousePressed(MouseEvent e) {
	message = "mousePressed"; 
    repaint(); }
  public void mouseReleased(MouseEvent e) {
	message = "mouseReleased"; 
    repaint(); }
  public void mouseDragged(MouseEvent e) {
	message = "mouseDragged"; 
    repaint(); }
  public void mouseMoved(MouseEvent e) {
	message = "mouseMoved"; 
    repaint(); }
  public void keyTyped(KeyEvent e) {
	message = "mouseMoved"; 
    repaint(); }
  public void keyPressed(KeyEvent e) {
	message = "mouseMoved"; 
    repaint(); }
  public void keyReleased(KeyEvent e) {
	message = "mouseMoved"; 
    repaint(); }
}

plusieurs "objets" à bouger à la souris

Source de Prog38.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Prog38 
       extends Applet
       implements MouseListener, 
                  MouseMotionListener {
  Rectangle6 rect1, rect2;
  boolean clicRect1, clicRect2;
  public void init() {
    rect1 = new Rectangle6(30,30,50,80,Color.gray);
    rect2 = new Rectangle6(100,60,70,30,Color.green);
    clicRect1 = false;
    clicRect2 = false;
    addMouseListener(this);
    addMouseMotionListener(this);
  }
  public void paint(Graphics g) {
      rect1.dessiner(g);
      rect2.dessiner(g);
  }
  public void mousePressed(MouseEvent e){
    if (rect1.estDans(e.getX(),e.getY())) 
      clicRect1=true;
    if (rect2.estDans(e.getX(),e.getY())) 
      clicRect2=true;
  }
  public void mouseDragged(MouseEvent e){
    if (clicRect1) {
      rect1.setPosition(e.getX(),e.getY());
      repaint();
    }
    if (clicRect2) {
      rect2.setPosition(e.getX(),e.getY());
      repaint();
    }
  }
  public void mouseReleased(MouseEvent e){
    if (clicRect1)
      clicRect1=false;
    if (clicRect2)
      clicRect2=false;
  }
  public void mouseEntered(MouseEvent e) {}
  public void mouseExited(MouseEvent e) {}
  public void mouseClicked(MouseEvent e) {}
  public void mouseMoved(MouseEvent e) {}
}

dessin à la souris

Source de Prog39.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Prog39 
       extends Applet
       implements MouseListener, 
                  MouseMotionListener {
  int x0, y0;
  Graphics g;
  public void init() {
    x0=0; y0=0;
    g = getGraphics();
    addMouseListener(this);
    addMouseMotionListener(this);
 }
  public void mousePressed(MouseEvent e){
    int x,y;
    x = e.getX();
    y = e.getY();
    x0=x; y0=y;
  }
  public void mouseDragged(MouseEvent e){
    int x,y;
    x = e.getX();
    y = e.getY();
    g.drawLine(x0, y0, x, y);
    x0=x; y0=y;
  }
  public void mouseEntered(MouseEvent e) {}
  public void mouseExited(MouseEvent e) {}
  public void mouseClicked(MouseEvent e) {}
  public void mouseReleased(MouseEvent e) {}
  public void mouseMoved(MouseEvent e) {}
}

exercices