esperanto
interlingua
 

Ajout des couleurs

La classe Carre2

Il ne reste plus qu'à ajouter les couleurs. Nous allons compléter notre objet Carre en lui donnant les trois attributs R, G et B, que nous appellerons dans l'applet.

Voici le code de cette nouvelle classe :

import java.awt.*;

class Carre2 extends Rectangle
{
   private int abscisse;
   private int ordonnee;
   public int R;
   public int G;
   public int B;

   public Carre2(int abscisse, int ordonnee, int R, int G, int B)
   {
   super(abscisse, ordonnee, 10, 10);
   this.abscisse = abscisse;
   this.ordonnee = ordonnee;
   this.R = R;
   this.G = G;
   this.B = B;
   }

   public void paint(Graphics g)
   {
   g.setColor(new Color(R, G, B));
   g.fillRect(abscisse, ordonnee, 10, 10);
   }
}

 

L'applet

Nous allons maintenant utiliser cette nouvelle classe dans l'applet. Nous allons pouvoir profiter de cette structure pour demander à chaque objet Carre2 d'afficher ses attributs R, G et B. Nous réutilisons bien sûr le mécanisme vu à l'étape 8 pour l'affichage des couleurs et le passage à la ligne. Nous avons recours à la méthode Integer.toString() pour transformer un entier en une chaîne de caractères affichable dans une zone de texte.

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

public class applet17 extends Applet
{
int abscisse = 0;
int ordonnee = 30;
int compteur = 0;
int R = 0;
int G = 0;
int B = 0;
int i = 0;
Carre2 [] tabCarre = new Carre2[216];
boolean dedans;
String t = new String("");
TextField T = new TextField(t, 10);

public void init()
{
add(T);
   for (int R=0;R<256;R+=51)
   {
   for (int G=0;G<256;G+=51)
      {
      for (int B=0;B<256;B+=51)
         {
         tabCarre [i] = new Carre2(abscisse,ordonnee, R, G, B);
         abscisse+=12;
         compteur +=1;
         i++;
         if (compteur == 18)
            {
            compteur = 0;
            abscisse = 0;
            ordonnee += 12;
            }//if
         }//for B
      }//for G
   }//for R
}//init

public void paint(Graphics g)
   {
   for (int j=0;j<216;j++)
      {
      tabCarre[j].paint(g);
      }//for j
   }//paint

   public boolean mouseDown(Event evt, int x, int y)
   {
   int k;
   for (k=0; k<216;k++)
      {
      dedans =(tabCarre[k].inside(x,y)) ? true : false;
      if (dedans)
         {
         t=Integer.toString(tabCarre[k].R) + " " + Integer.toString(tabCarre[k].G) + " " + Integer.toString(tabCarre[k].B);
         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 :

Le code de la classe prêt à l'emploi
Le code de l'applet prêt à l'emploi

L'essentiel de l'applet est maintenant réalisé. Dans les prochaines étapes, nous allons un peu améliorer la présentation et ajouter l'affichage des codes RGB en hexadécimal.