esperanto
français
 

Render un rectangulo cliccabile

Nos va primemente designar un sol rectangulo. Quando uno cliccara super ille rectangulo, un texto essera exhibite infra.

Le principio

Nos ha vidite quomodo designar un forma rectangular [g.fillRect()] e quomodo utilisar le cliques del mure super le zona del applet. Le sol cosa que nos ancora debe apprender es controlar si le cliques del mure occurre super le area del rectangulo designate.
Un solution a iste problema es de instantiar un objecto Rectangle (completemente distincte del forma rectangular designate per g.fillRect() !) cuje proprietates spatial (abscissa, ordinata, largor, altitude) correspondera al forma rectangular que nos designara. Ille objecto nos dicera postea si'illo ha recipite un clic de mure.

Le classe Rectangle

In le applet infra, nos utilisa le instruction sequente :
Rectangle r = new Rectangle(10,10,20,20);

Ille instruction necessitarea longe explicationes, nam illo es typic de un linguage orientate objecto como java. Pro restar breve, e probabilemente obscur, nos dicera illo :
- Rectangle es un classe predefinite del linguage java : il es un structura que permitte de construer objectos (rectangulos) cuje proprietates (le attributos) es cognite, nam descripte in le documentation de java. Le instruction Rectangle r = new Rectangle(10,10,20,20); permitte de instantiar un objecto del classe Rectangle, hic nominate r ;
- tote objecto del classe Rectangle ha per exemplo le proprietates (le attributos) width (largor del rectangulo), height (altitude del rectangulo), x (abscissa del angulo superior sinistre del rectangulo) e y (ordinata del angulo superior sinistre del rectangulo) que nos utilisa in le applet ;
- ultra, le classe Rectangle propone instructiones, o functiones (methodos) permittente de ager con le rectangulos. Un de ille instructiones e le methodo inside() que permitte de saper si un puncto es al interior de un rectangulo. [Attention : iste methodo es devenite obsolete jam del version 1.1 de java.]

Ecce le codice del applet :

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

public class applet12 extends Applet
{
Rectangle r = new Rectangle(10,10,20,20);--- un objecto que defini un zona rectangular
boolean intra;

public void paint(Graphics g)
   {
   g.setColor(Color.black);
   g.fillRect(r.x,r.y,r.width,r.height);--- utilisation del attributos del objecto Rectangle r       if (intra)
      {
      g.setColor(Color.black);
      g.drawString("Si", 10, 50);
      }//if
   }//paint

   public boolean mouseDown(Event evt, int x, int y)
   {
   intra =(r.inside(x,y)) ? true : false;--- test : ha uno cliccate in le objecto r ?    repaint();
   return true;
   }

   public boolean mouseUp(Event evt, int x, int y)
   {
   intra=false;
   repaint();
   return true;
   }
}

 

E ecce le resultato :
- clicca super le applet, sed al exterior del rectangulo ;
- clicca super le rectangulo.

Le codice preste al uso

Qualque explicationes

Rectangle(10,10,20,20)
Le methodo Rectangle() permitte de construer un objecto del classe Rectangle. Le 4 argumentos petite in parametros (in parentheses) es nomeros integre indicante, in ille ordine, le valores del attributos x, y, width e height del zona rectangular ita instantiate. Le documentation del linguage java presenta le informationes ita : Rectangle(int x, int y, int width, int height), e postea es donate le signification del attributos x, y, width e height.
g.fillRect(r.x,r.y,r.width,r.height)
Le methodo fillRect() pete alsi 4 argumentos (vide passo 3). Hic, nos le passa le valores del attributos del objecto r que nos ha instantiate supra. Pro referer se a ille valores, nos utilisa le notation per puncto : objecto + puncto + attributo (r.width).
intra =(r.inside(x,y)) ? true : false;
? : es un operator ternari conditional.
Ille premitte in prime loco de facer un test super un proposition : es (r.inside(x,y)) ver ?
Si le proposition es ver, le prime valor, illo que precede le : , es attribute al variabile, hic nominate intra.
Si le proposition es false, le secunde valor, illo que seque le : , es attibute al variabile, hic nominate intra.
Alias dicte :
valor_final = test ? A : B; significa :
• si test es ver, valor_final recipe le valor A;
• si test es false, valor_final recipe le valor B;