|
Fari retprogramon surklakebla
Ni unue faros, ke retprogramo reagu je klako de muso. Kiam oni surklakos la zonon de la retprogramo, teksto aperos.
Grava memoriga averto : la posta kodo uzas la version 1.0 de la lingvo Ĝavo. La sistemo por reagi je la musklakoj ŝanĝiĝis ekde la versio 1.1 de la lingvo. Tamen, la retprogramoj verkitaj en 1.0 plu funkcias tiel bone sur la malnovaj retumiloj kiel sur la novaj.
mouseDown() kaj mouseUp()
Musklaki estas premi la butonon de la muso (mouseDown) kaj poste ĝin malpremi (mouseUp). Do okazas du okazaĵoj, ofte sur du malsamaj lokoj, ĉ la muso facile moviĝas.
La metodoj mouseDown() kaj mouseUp() ebligas uzi ĉiujn ĉi informojn : la okazaĵo mem kaj la koordinatojn de la loko, kie okazis la okazaĵo.
Ekzemple :
public boolean mouseUp(Event evt, int x, int y)
{
absciso = x;
ordinato = y;
return true;
}
Tiu peco de kodo (ĝi ne estas retprogramo !) ebligas ricevi kaj registri la abscison kaj ordinaton de la loko, kie oni malpremis la butonon de la muso.
Kelkaj klarigoj
boolean
La metodoj mouseDown() kaj mouseUp() redonas Bulean rezulton, t.e. ili redonas al la retprogramo unu el la valoroj true (jes, mi traktis la okazaĵon) aŭ false (ne, mi ne traktis la okazaĵon).
return true;
La metodo eksplicite redonas la valoron true, indikante, ke ĝi ja traktis la okazaĵon.
Bulea variablo
Se nia retprogramo povas scii, ke oni surklakis ĝin, kaj sur kiu loko, dank'al la metodoj mouseDown() kaj mouseUp(), ni devas ankoraŭ trovi rimedon por sendi tiun sciaĵon al aliaj partoj de la programo.
Unu el la eblecoj estas deklari Bulean variablon [boolean ene;] , kiu povas ricevi nur du valorojn : true aŭ false. Se la musklako okazas, oni donas al tiu variablo la valoron true.
Jen la kodo de la retprogramo :
import java.applet.*;
import java.awt.*;
public class apleto11 extends Applet
{
boolean ene;
public void paint(Graphics g)
{
if (ene)--- se la variablo ene havas la valoron true
{
g.setColor(Color.black);
g.drawString("Jes", 10, 50);
}//if
}//paint
public boolean mouseDown(Event evt, int x, int y)
{
ene = true;
repaint();--- la metodo paint() afiŝas "Jes"
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{
ene=false;
repaint();--- la metodo paint() faras nenion
return true;
}
}
Klaku sur la zono de la ĉi-suba retprogramo :
La uzpreta kodo
Kelkaj pliaj klarigoj
import java.awt.*;
Ni petas la programon ĉerpi el ilara skatolo : awt = abstract window toolkit. En tiu ilara skatolo estas ĉio necesa por trakti la agojn de la muso.
if (ene)
Tio estas pli mallonga maniero skribi : if (ene == true).
La variablo ene ricevas la valoron "true", nur kiam oni premas la butonon de la muso ene de la retprograma zono. Se ene havas la valoron "false" (kiam oni faras nenion, aŭ kiam oni malpremas la butonon de l'muso), la metodo paint() faras nenion. Se ene havas la valoron "true", la metodo paint() desegnas la vorton "Jes".
repaint();
Tiu metodo relanĉas la metodon paint (), kiu troviĝas supre en la programo.
|