esperanto
interlingua
 

Dernières mises au point

Nous allons améliorer l'affichage RGB en base dix en ajoutant les lettres R, G et B devant les chiffres. Cela n'est pas bien difficile, mais cela nous oblige à allonger la zone de texte T et à raccourcir la zone U, de manière qu'elles tiennent dans le panneau :

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

public class applet23 extends Applet
{
int abscisse = 0;
int ordonnee = 0;
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("");
String u = new String("");
TextField T = new TextField(t, 14);
TextField U = new TextField(t, 7);
Panel MonPanneau = new Panel();

public void init()
{
setBackground(Color.white);
setLayout(new BorderLayout());
MonPanneau.add(T);
MonPanneau.add(U);
MonPanneau.setBackground(Color.white);
   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
add("South", MonPanneau);
}//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 = "R: " +Integer.toString(tabCarre[k].R) + " G: " + Integer.toString(tabCarre[k].G) + " B: " + Integer.toString(tabCarre[k].B);
         T.setText(t);

         String zero = new String("0");
         String uR = new String();
         uR = Integer.toString(tabCarre[k].R, 16);
         if (uR.equals(zero)) {uR = zero + zero;}
         uR = "#" + uR;

         String uG = new String();
         uG = Integer.toString(tabCarre[k].G, 16);
         if (uG.equals(zero)) {uG = zero + zero;}

         String uB = new String();
         uB = Integer.toString(tabCarre[k].B, 16);
         if (uB.equals(zero)) {uB = zero + zero;}

         U.setText(uR + uG + uB);
         }
      }//for k
   return true;
   }

   public boolean mouseUp(Event evt, int x, int y)
   {
   dedans=false;
   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

Et voilà ! On pourrait encore améliorer la présentation, et on pourrait inclure les conversions en hexadécimal dans la classe Carre2, mais l'essentiel est atteint.