next up previous
Next: Exercice 2 : un Up: No Title Previous: Présentation avancée de Java

Exercice 1 : pour faire le point interactivement

On définit la classe Point1 de la manière suivante[*] :

Fichier : Point1.java

public class Point1 {  

  int x, y;

  public Point1 (int x, int yy) {  
    y = yy;
    this.x = x;
  }

  public void display () {
    System.out.println("Point(" + x + "," + y + ")");
  }    

  public static void main (String[] args) {    
    Point1 pt = new Point1(2, 3);   
    pt.display();
  }
}

qui ne produit qu'un affichage sur la sortie System.out. La classe Point2 qui étend Point1 et surcharge la méthode show en affichant un rectangle noir de manière graphique est définie ainsi :

Fichier : Point2.java

import java.awt.Graphics;   
import java.awt.Color;   

public class Point2 extends Point1 {  

  public Point2 (int x, int yy) {  
    super(x, yy);
  }

  public void show (Graphics g) {
    g.setColor(Color.black);
    g.fillRect(x, y, 10, 10);
  }    

}

Enfin la classe Point2test est une sous-classe d'Applet définie ainsi :

Fichier : Point2test.java

import java.applet.*;       
import java.awt.*; 
import java.awt.event.*;

public class Point2test extends Applet { 

  class AdaptateurSouris extends MouseAdapter implements MouseListener {
      public void mousePressed (MouseEvent e)
      { 
        int x = e.getX();
        int y = e.getY();
        Point2 pt = new Point2(x, y);
        pt.show(Point2test.this.getGraphics());
        pt.display();
      }
   }

  public void init_evenement() {
    MouseListener clic = new AdaptateurSouris();
    addMouseListener(clic);
  } 

  public void init () { 
    this.setBackground(Color.white);
    init_evenement();
  }

}

1.
Que fait cette applet et qu'affiche-t-elle quand on appuie sur un bouton de la souris?
2.
Ecrire une classe PointColore sous-classe de Point1 tenant compte de la couleur du point.
3.
Ecrire une classe Point3test sous-classe de Point2test qui étend le comportement de l'applet en ajoutant un menu de sélection de couleur (on pourra se limiter à 2 couleurs) pour le tracé des points. Cette classe possède deux champs de données supplémentaires : un champ Color pour la couleur courante et un champs Choice que l'on initialise avec la méthode addItem.
4.
Ecrire une classe Point4test sous-classe de Point3test qui permet de dessiner des rectangles. Si la largeur ou la hauteur du rectangle est plus petite qu'une constante, on affiche alors un point coloré. On calcule la taille du rectangle par les coordonnées de la souris quand on presse un bouton jusqu'au coordonnées de la souris quand on relache le bouton. Il est nécessaire de conserver les coordonnées du premier clic.

next up previous
Next: Exercice 2 : un Up: No Title Previous: Présentation avancée de Java
Emmanuel CHAILLOUX
12/7/1997