français
interlingua
 

Aldono de la koloroj

La klaso Kvadrato2

Ni devas ankoraŭ aldoni nur la kolorojn. Ni kompletigos nian objekton Kvadrato per tri kromaj atributoj, R, G kaj B, kiujn ni vokos en la retprogramo.

Jen la kodo de tiu nova klaso :

import java.awt.*;

class Kvadrato2 extends Rectangle
{
   private int absciso;
   private int ordinato;
   public int R;
   public int G;
   public int B;

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

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

 

La retprogramo

Ni nun uzos tiun novan klason en la retprogramo. Ni profitos tiun strukturon por peti, ke ĉiu objekto Kvadrato2 afiŝu siajn atributojn R, G kaj B. Ni kompreneble reuzos la meĥanismon viditan en la paŝo 8 por la afiŝado de la koloroj kaj la alineado. Ni uzas la metodon Integer.toString() por transformi entjeron en signoĉenon afiŝeblan en entajpebla linio.

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

public class apleto17 extends Applet
{
int absciso = 0;
int ordinato = 30;
int registrilo = 0;
int R = 0;
int G = 0;
int B = 0;
int i = 0;
Kvadrato2 [] tabKvadrato = new Kvadrato2[216];
boolean ene;
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)
         {
         tabKvadrato [i] = new Kvadrato2(absciso,ordinato, R, G, B);
         absciso+=12;
         registrilo +=1;
         i++;
         if (registrilo == 18)
            {
            registrilo = 0;
            absciso = 0;
            ordinato += 12;
            }//if
         }//for B
      }//for G
   }//for R
}//init

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

   public boolean mouseDown(Event evt, int x, int y)
   {
   int k;
   for (k=0; k<216;k++)
      {
      ene =(tabKvadrato[k].inside(x,y)) ? true : false;
      if (ene)
         {
         t=Integer.toString(tabKvadrato[k].R) + " " + Integer.toString(tabKvadrato[k].G) + " " + Integer.toString(tabKvadrato[k].B);
         T.setText(t);
         }
      }//for k
   return true;
   }

   public boolean mouseUp(Event evt, int x, int y)
   {
   ene=false;
   t="";
   T.setText(t);
   return true;
   }
}

 

Jen la rezulto :

La uzpreta kodo de la klaso
La uzpreta kodo de la retprogramo

La ĉefa parto de la retprogramo estas nun efektivigita. En la venontaj paŝoj, ni plibonigos la aspekton kaj aldonos la afiŝadon de la RGB-valoroj en la deksesuma nombrosistemo.