|
Un tableau d'objets RectangleArrivés à cette étape, nous savons dessiner 216 rectangles de couleurs différentes, et nous savons rendre un seul rectangle cliquable, grâce à un objet Rectangle. Instancier automatiquement des objetsÀ l'étape 10, nous avons instancié un seul objet Rectangle par l'instruction :
int abscisse = 0;
for (i=0; i<5; i++) { Rectangle r = new Rectangle(abscisse, 10, 10, 10); abscisse+=12; }
L'inconvénient, comme vous le voyez peut-être, c'est que ces boucles créent cinq fois le même objet Rectangle r : il faudrait donner à chaque objet un nom différent (r1, r2...), puis se référer aux attributs et méthodes de chacun des rectangles [par exemple : r1.width, r2.inside()], mais cela est impossible en utilisant ce procédé. Un tableauUn tableau permet de stocker et de retrouver commodément plusieurs variables. Nous avons dit à l'étape 5 qu'une variable était une boîte, que l'on remplit avec une valeur. Un tableau est une plus grosse boîte qui peut contenir une ou plusieurs variables. int [] tabi ; Cette instruction donne naissance à un tableau de variables de type "entier" nommé tabi. On peut aussi préciser ce qu'on appelle la longueur du tableau, c'est à dire le nombre d'éléments que contiendra le tableau : Comment remplir un tableau ? On peut utiliser une instruction de ce genre : Ce petit schéma vous aidera peut-être à visualiser ce qu'est un tableau avec ses indices :
On peut ainsi, en utilisant une boucle for(), remplir facilement un tableau. Par exemple :
int [] tabi = new int[5];
for (int i=0; i<5; i++) { tabi [i] = i; }
Ces instructions donnent naissance à un tableau de cinq entiers : 0, 1, 2, 3, 4. Un tableau d'objetsNous allons appliquer ces astuces à la création d'un tableau d'objets Rectangle.
int abscisse = 0;
Rectangle [] tabRectangle = new Rectangle[5];--- déclaration d'un tableau d'objets Rectangle for (int i=0; i<5; i++) { tabRectangle [i] = new Rectangle(abscisse,10,10,10);--- allocation de valeurs au tableau grâce à une boucle abscisse+=12; }
Ce code permet de créer 5 objets Rectangle, chacun avec une abscisse différente. On pourra par la suite référencer chacun de ces objets par leur indice dans le tableau : tabRectangle[0] est le premier Rectangle (son abscisse est de 0), tabRectangle[1] est le deuxième (son abscisse est de 12), et ainsi de suite. Voici le code complet de l'applet, agrémentée d'une zone de texte, comme vu à l'étape précédente :
import java.applet.*;
import java.awt.*; public class applet15 extends Applet { int abscisse = 0; Rectangle [] tabRectangle = new Rectangle[5]; boolean dedans; String t = new String(""); TextField T = new TextField(t, 5); public void init() { add(T); for (int i=0; i<5; i++) { tabRectangle [i] = new Rectangle(abscisse,30,10,10); abscisse+=12; }//for i }//init public void paint(Graphics g) { g.setColor(Color.black); for (int j=0;j<5;j++) { g.fillRect(tabRectangle[j].x,tabRectangle[j].y,tabRectangle[j].width,tabRectangle[j].height); }//for j }//paint public boolean mouseDown(Event evt, int x, int y) { int k; for (k=0; k<5;k++) { dedans =(tabRectangle[k].inside(x,y)) ? true : false; if (dedans) { t="Oui"; T.setText(t); } }//for k return true; } public boolean mouseUp(Event evt, int x, int y) { dedans=false; t=""; T.setText(t); return true; } }
Et voici le résultat :
|
||
![]() |
![]() |