public class ObsluhaUdalostí extends Object
Trieda obsluhy udalostí slúži na obsluhu rozmanitých udalostí. Napríklad: akcie myši, klávesnice, voľby položky ponuky, vymazania alebo prekreslenia sveta… Keď chcete, aby aplikácia vytvorená s podporou programovacieho rámca GRobot poskytovala funkcionalitu spojenú s klávesnicou, myšou a podobne, je potrebné nasledujúcim spôsobom vytvoriť inštanciu tejto triedy slúžiacej na obsluhu udalostí, pričom stačí uviesť tie metódy (reakcie), ktoré plánujete využiť:
new
ObsluhaUdalostí
() {// Časovač
@
Overridepublic
void
tik
() {}// Klávesnica
@
Overridepublic
boolean
zmenaFokusu
(boolean
vpred) {return
true
; }@
Overridepublic
void
stlačenieKlávesu
() {}@
Overridepublic
void
uvoľnenieKlávesu
() {}@
Overridepublic
void
zadanieZnaku
() {}// Myš
@
Overridepublic
void
klik
() {}@
Overridepublic
void
stlačenieTlačidlaMyši
() {}@
Overridepublic
void
uvoľnenieTlačidlaMyši
() {}@
Overridepublic
void
pohybMyši
() {}@
Overridepublic
void
ťahanieMyšou
() {}@
Overridepublic
void
rolovanieKolieskomMyši
() {}// Rozhranie (položky, tlačidlá, skratky…)
@
Overridepublic
void
voľbaPoložkyPonuky
() {}@
Overridepublic
void
voľbaKontextovejPoložky
() {}@
Overridepublic
void
voľbaTlačidla
() {}@
Overridepublic
void
voľbaSystémovejIkony
() {}@
Overridepublic
void
voľbaSystémovejPoložky
() {}@
Overridepublic
void
aktiváciaOdkazu
() {}@
Overridepublic
void
klávesováSkratka
() {}@
Overridepublic
void
zmenaPosunuLišty
() {}@
Overridepublic
void
ťahanieSúborov
() {}@
Overridepublic
void
pustenieSúboru
(String
súbor) {}@
Overridepublic
void
ťahanieUkončené
(javax.swing.JComponent
zdroj,java.awt.datatransfer.Transferable
údaje,int
akcia) {}// Prekresľovanie
@
Overridepublic
void
prekreslenie
() {}@
Overridepublic
void
vymazanie
() {}@
Overridepublic
void
dokreslenie
() {}// Sekvencia
@
Overridepublic
void
sekvencia
(int
kódSpracovania,Object
zdroj,Object
cieľ,long
stav,long
celkovo) {}// Animácia
@
Overridepublic
void
zastavenieAnimácie
(Obrázok
obrázok) {}// Okno
@
Overridepublic
void
aktiváciaOkna
() {}@
Overridepublic
void
deaktiváciaOkna
() {}@
Overridepublic
void
maximalizovanie
() {}@
Overridepublic
void
minimalizovanie
() {}@
Overridepublic
void
obnovenie
() {}@
Overridepublic
void
zobrazenieOkna
() {}@
Overridepublic
void
skrytieOkna
() {}@
Overridepublic
void
presunutieOkna
() {}@
Overridepublic
void
zmenaVeľkostiOkna
() {}@
Overridepublic
void
otvorenie
() {}@
Overridepublic
boolean
zavretie
() {return
true
; }// Alternatíva: zatvorenie()
// Ukončenie aplikácie
@
Overridepublic
void
ukončenie
() {}// Konfigurácia
@
Overridepublic
boolean
konfiguráciaZmenená
() {return
false
; }@
Overridepublic
void
čítajKonfiguráciu
(Súbor
súbor) {}@
Overridepublic
void
zapíšKonfiguráciu
(Súbor
súbor) {}// Konzola (vizuálna vlastnosť textu konzoly)
// vyžaduje import java.awt.Color;
@
Overridepublic
Color
farbaAktívnehoSlova
(String
slovo) {return
null
; }// Vstupný riadok
@
Overridepublic
void
potvrdenieÚdajov
() {}// Alternatíva: potvrdenieVstupu()
@
Overridepublic
void
zrušenieÚdajov
() {}// Alternatíva: zrušenieVstupu()
// Štandardný vstup
@
Overridepublic
void
spracujRiadokVstupu
(String
riadokVstupu) {}@
Overridepublic
void
koniecVstupu
() {}// Príkazový riadok
@
Overridepublic
void
ukončenieProcesu
( Svet.PríkazovýRiadok príkazovýRiadok,int
návratovýKód) {}// Ladenie a interaktívny režim
@
Overridepublic
void
spracovaniePríkazu
() {}@
Overridepublic
boolean
ladenie
(int
riadok,String
príkaz,int
správa) {return
super
.ladenie(riadok, príkaz, správa); }// (Prípadne iné.)
};
Musí byť presne dodržaná syntax metód, to jest vo väčšine prípadov:
@
Override
public
void
«názov reakcie»()
{ … }
, kde
«názov reakcie» je jeden z názvov vyššie uvedených reakcií.
(Klauzula Override
slúži na kontrolu. Keby sme ju
neuviedli a omylom urobili v názve metódy (reakcie) hoci nepatrný
preklep, obsluha určenej udalosti by nefungovala (aplikácia by
nereagovala).) Medzi zložené zátvorky sa {}
,
samozrejme, vpisuje kód, ktorý bude spustený v prípade, že nastane
(vznikne) prislúchajúca udalosť (napríklad používateľ stlačí kláves,
tlačidlo myši a podobne…).
Vytváranie obsluhy udalostí sa dá obísť tak, že prekryjete
prislúchajúce metódy ľubovoľného robota, ktoré sú na tento účel pripravené:
GRobot
.
tik
()
,
GRobot
.
klik
()
…
Rozhranie robotov však nemusí poskytnúť úplný zoznam metód obsluhy
udalostí. Napríklad neposkytuje metódu ladenie
. Pri tých metódach, ktoré má k dispozícii platí, že metódy
obsluhy udalostí majú prednosť. Z toho dôvodu je možné, že ak nastane
počas spracovania metódy obsluhy udalostí výnimka, ktorá nebude v jej
tele zachytená, tak spracovanie udalosti robotmi nemusí nastať.
Pre jeden svet je možné spravidla definovať len jednu inštanciu obsluhy udalostí. (Výnimku z tohto pravidla spomenieme neskôr.) Pri pokuse o vytvorenie viacerých inštancií vznikne výnimka oznamujúca, že obsluha udalostí už bola definovaná.
Nasledujúci príklad demonštruje vytvorenie obsluhy udalostí na klik myšou. Robotu najskôr nastavuje rýchlosť, inak by sa nehýbal, a vzápätí je v obsluhe udalostí definované, aby sa robot po kliknutí myšou na plátno rozbehol smerom na pozíciu, kam bolo kliknuté.
rýchlosť
(10
,false
);new
ObsluhaUdalostí
() {@
Overridepublic
void
klik
() {cieľNaMyš
(); } };
Rozšírená konfigurácia
Automatická konfigurácia sa spúšťa príkazom
Svet
.
použiKonfiguráciu
pred vytvorením sveta. Predvolene je v konfigurácii
uložená len informácia o veľkosti a polohe hlavného okna aplikácie.
K týmto údajom je možné pridať skupinu vlastných konfiguračných údajov
a to s využitím troch na to rezervovaných reakcií
(konfiguráciaZmenená()
,
zapíšKonfiguráciu(súbor)
a čítajKonfiguráciu(súbor)
– ich význam je podrobnejšie opísaný
v komentároch v príklade nižšie) nasledujúcim spôsobom:
Na to, aby mala vlastná konfigurácia zmysel (aby sa aktuálne hodnoty konfiguračných premenných vždy korektne uložili pri ukončení aplikácie a prečítali pri jej opätovnom štarte), je potrebné prekryť (naprogramovať obsah) všetkých troch reakcií:import
knižnica.*;public
class
TestKonfigurácieextends
GRobot
{// Stručný princíp:
//
// 1. Pre každú vlastnosť definujeme dvojicu atribútov.
// A) Jeden atribút bude slúžiť na uchovanie skutočnej hodnoty
// vlastnosti. S ním budeme pracovať v rámci celej aplikácie.
// B) Druhý atribút bude slúžiť na uchovanie počiatočnej (prečítanej)
// hodnoty vlastnosti. S ním budeme pracovať len pri čítaní
// počiatočnej hodnoty a overení toho, či nastala zmena hodnoty
// sledovanej vlastnosti.
//
// 2. Prekryjeme trojicu rekacií: konfiguráciaZmenená, zapíšKonfiguráciu
// a čítajKonfiguráciu.
// A) konfiguráciaZmenená – poskytuje od nás programovaciemu rámcu GRobot
// informáciu o tom, či je potrebné zapísať konfiguračný
// súbor, to jest, či bola konfigurácia zmenená…
// B) zapíšKonfiguráciu – slúži na zapísanie našich vlastných
// konfiguračných atribútov
// C) čítajKonfiguráciu – slúži na čítanie našich vlastných
// konfiguračných atribútov
//
// 3. Nesmieme zabudnúť spustiť príkaz Svet.použiKonfiguráciu… Tento
// príkaz musí byť spustený ešte pred inicializáciou (naštartovaním)
// sveta, to znamená – pred spustením konštruktora (pozri metódu main
// nižšie).
//
// Definícia vlastných konfiguračných vlastností:
private
boolean
vlastnosť =false
;// „skutočná“ vlastnosť
private
boolean
prečítanáVlastnosť =false
;// „tieň“ – detektor zmien
// Prípadne ďalšie dvojice…
// ...
private
TestKonfigurácie() {// Toto tlačidlo bude meniť stav vlastnosti:
final
Tlačidlo
tlačidlo =new
Tlačidlo
("Zapnúť"
);new
ObsluhaUdalostí
() {@
Overridepublic
void
voľbaTlačidla
() {if
(tlačidlo.aktivované
()) {// Ak bolo zvolené, zmení sa hodnota vlastnosti aj text
// tlačidla
vlastnosť = !vlastnosť; tlačidlo.text
(vlastnosť ?"Vypnúť"
:"Zapnúť"
); } }// Na to, aby vlastná konfigurácia fungovala je nevyhnutné
// naprogramovanie nasledujúcich troch reakcií:
@
Overridepublic
boolean
konfiguráciaZmenená
() {if
(vlastnosť != prečítanáVlastnosť)return
true
;// ...
return
false
; }@
Overridepublic
void
zapíšKonfiguráciu
(Súbor
súbor)throws
java.io.IOException
{// Zapisujeme hodnoty skutočných vlastností:
súbor
.zapíšVlastnosť
("vlastnosť"
, vlastnosť);// ...
}@
Overridepublic
void
čítajKonfiguráciu
(Súbor
súbor)throws
java.io.IOException
{// Pri čítaní zmeníme naraz hodnotu skutočnej vlastnosti
// aj hodnotu premennej prečítanáVlastnosť, ktorá slúži ako
// detektor zmien a ktorá je vyhodnocovaná v reakcii
// konfiguráciaZmenená.
vlastnosť = prečítanáVlastnosť =súbor
.čítajVlastnosť
("vlastnosť"
, vlastnosť).booleanValue
();// ...
} };// Pre korektnosť je po prečítaní konfigurácie vhodné upraviť
// ovládacie prvky tak, aby ich vzhľad zodpovedal aktuálnej hodnote
// vlastnosti s ktorou súvisia:
tlačidlo.text
(vlastnosť ?"Vypnúť"
:"Zapnúť"
);// ...
}public
static
void
main(String
[] args) {// Dôležité je uviesť príkaz použiKonfiguráciu pred inicializáciou
// aplikácie (pred spustením konštruktora). Inak by bol pokus
// o vykonanie tohto príkazu zamietnutý
Svet
.použiKonfiguráciu
("test.cfg"
);new
TestKonfigurácie(); } }
konfiguráciaZmenená
, zapíšKonfiguráciu
a čítajKonfiguráciu
. Syntax pri
prekrývaní je potrebné detailne dodržať, to znamená, že pri tých
reakciách, pri ktorých je to vyžadované, je nevyhnutné uviesť parameter
Súbor
aj klauzulu throws
.
Výnimka z pravidla jedinej obsluhy udalostí
Pôvodne nebolo možné v tomto smere v programovacom rámci GRobot robiť
žiadne výnimky. Z bezpečnostných dôvodov bolo v rámci jednej aplikácie
možné vytvoriť len jednu obsluhu udalostí a tá bola pre stanovenú aplikáciu
konečná. Možnosť povolenia vytvárania viacerých inštancií obsluhy udalostí pribudla
v priebehu vývoja, no odporúčame túto možnosť využiť len v nevyhnutnom
prípade. Príklad, ktorý používa zapnutie viacnásobného spracovania udalostí
nájdete pri opise metódy presmerujObsluhuUdalostí
.
Konštruktor a opis |
---|
ObsluhaUdalostí()
Predvolený konštruktor obsluhy udalostí.
|
Modifikátor a typ | Metóda a opis |
---|---|
void |
aktivaciaOdkazu()
Alias pre
aktiváciaOdkazu . |
void |
aktiváciaOdkazu()
Spustená po aktivácii hypertextového odkazu umiestneného v rámci
niektorej z inštancií triedy
PoznámkovýBlok . |
void |
aktivaciaOkna()
Alias pre
aktiváciaOkna . |
void |
aktiváciaOkna()
Spustená pri aktivácii okna.
|
static ObsluhaUdalosti |
aktivna()
Alias pre
aktívna . |
static ObsluhaUdalostí |
aktívna()
Vráti aktuálny objekt obsluhy udalostí (aktívnu obsluhu udalostí)
alebo
null , ak nie je aktívna žiadna obsluha udalostí. |
void |
citajKonfiguraciu(Súbor subor)
Alias pre
čítajKonfiguráciu . |
void |
čítajKonfiguráciu(Súbor súbor)
Reakcia je vykonaná počas čítania automatickej konfigurácie.
|
void |
deaktivaciaOkna()
Alias pre
deaktiváciaOkna . |
void |
deaktiváciaOkna()
Spustená pri deaktivácii okna.
|
void |
dokreslenie()
Spustená po prekreslení sveta.
|
Color |
farbaAktivnehoSlova(String slovo)
Alias pre
farbaAktívnehoSlova . |
Color |
farbaAktívnehoSlova(String slovo)
Spustená pri overovaní zmeny farby, ktorou má byť vypísané určité
(zadané) aktívne slovo vnútornej konzoly.
|
void |
klavesovaSkratka()
Alias pre
klávesováSkratka . |
void |
klávesováSkratka()
Spustená pri zvolení klávesovej skratky.
|
void |
klik()
Spustená pri kliknutí tlačidlom myši.
|
boolean |
konfiguraciaZmenena()
Alias pre
konfiguráciaZmenená . |
boolean |
konfiguráciaZmenená()
Výsledok (návratová hodnota) tejto reakcie môže byť overená pred
zápisom automatickej
konfigurácie.
|
void |
koniecVstupu()
Táto reakcia je spustená len v prípade, že štandardný vstup
(aktivovaný metódou
aktivujŠtandardnýVstup alebo niektorou jej verziou) je konečný. |
boolean |
ladenie(int riadok,
String príkaz,
int správa)
Táto reakcia je vykonávaná v režime ladenia.
|
void |
maximalizovanie()
Spustená pri maximalizovaní okna.
|
void |
minimalizovanie()
Spustená pri minimalizovaní okna.
|
void |
obnovenie()
Spustená pri obnovení okna.
|
void |
otvorenie()
Spustená pri prvom zobrazení okna.
|
void |
pohybMysi()
Alias pre
pohybMyši . |
void |
pohybMyši()
Spustená pri pohybe myši nad plátnom podlahy.
|
void |
potvrdenieUdajov()
Alias pre
potvrdenieÚdajov . |
void |
potvrdenieÚdajov()
Spustená po stlačení klávesu
Enter vo vstupnom riadku
zobrazenom po zavolaní metódy začniVstup . |
void |
potvrdenieVstupu()
Alias pre
potvrdenieÚdajov . |
void |
prekreslenie()
Spustená pri (pred) prekreslení sveta.
|
void |
presunutieOkna()
Spustená pri presunutí okna.
|
void |
pustenieSuboru(String súbor)
Alias pre
pustenieSúboru . |
void |
pustenieSúboru(String súbor)
Spustená po dokončení ťahania súboru z externej aplikácie.
|
void |
rolovanieKolieskomMysi()
Alias pre
rolovanieKolieskomMyši . |
void |
rolovanieKolieskomMyši()
Spustená pri rolovaní kolieskom myši.
|
void |
sekvencia(int kódSpracovania,
Object zdroj,
Object cieľ,
long stav,
long celkovo)
Táto reakcia súvisí s časovo náročným spracovaním údajov počas
práce s pevným diskom.
|
void |
skrytieOkna()
Spustená pri skrytí okna.
|
void |
spracovaniePrikazu()
Alias pre
spracovaniePríkazu . |
void |
spracovaniePríkazu()
Spustená po pozitívnom spracovaní príkazu v interaktívnom režime.
|
void |
spracujRiadokVstupu(String riadokVstupu)
Asynchrónne prijíma údaje (ak sú k dispozícii) zo štandardného
vstupu (externého zdroja), ktorý bol aktivovaný metódou
aktivujŠtandardnýVstup (alebo
niektorou jej verziou). |
void |
stlacenieKlavesu()
Alias pre
stlačenieKlávesu . |
void |
stlacenieTlacidlaMysi()
Alias pre
stlačenieTlačidlaMyši . |
void |
stlačenieKlávesu()
Spustená pri stlačení klávesu.
|
void |
stlačenieTlačidlaMyši()
Spustená pri stlačení tlačidla myši.
|
void |
tahanieMysou()
Alias pre
ťahanieMyšou . |
void |
ťahanieMyšou()
Spustená pri pohybe myši nad hlavným komponentom okna (pri svete
hovoríme často o plátnach) počas držania tlačidla myši.
|
void |
tahanieSuborov()
Alias pre
ťahanieSúborov . |
void |
ťahanieSúborov()
Táto reakcia je spúšťaná počas ťahania súboru a lebo súborov nad
hlavným komponentom okna.
|
void |
tahanieUkoncene(JComponent zdroj,
Transferable údaje,
int akcia)
Alias pre
ťahanieUkončené . |
void |
ťahanieUkončené(JComponent zdroj,
Transferable údaje,
int akcia)
Spustená po dokončení ťahania súboru alebo súborov do externej
aplikácie.
|
void |
tik()
Spustená v pravidelnom časovom intervale časovača, ktorý sa dá
odštartovať metódou
spustiČasovač a zastaviť metódou zastavČasovač . |
void |
ukoncenie()
Alias pre
ukončenie . |
void |
ukoncenieProcesu(Svet.PríkazovýRiadok príkazovýRiadok,
int návratovýKód)
Alias pre
ukončenieProcesu . |
void |
ukončenie()
Spustená pri ukončení aplikácie.
|
void |
ukončenieProcesu(Svet.PríkazovýRiadok príkazovýRiadok,
int návratovýKód)
Táto reakcia je spustená po ukončení externého procesu, ktorý
spustila zadaná inštancia triedy
PríkazovýRiadok . |
void |
uvolnenieKlavesu()
Alias pre
uvoľnenieKlávesu . |
void |
uvoľnenieKlávesu()
Spustená pri uvoľnení klávesu.
|
void |
uvolnenieTlacidlaMysi()
Alias pre
uvoľnenieTlačidlaMyši . |
void |
uvoľnenieTlačidlaMyši()
Spustená pri uvoľnení tlačidla myši.
|
void |
volbaKontextovejPolozky()
Alias pre
voľbaKontextovejPoložky . |
void |
voľbaKontextovejPoložky()
Spustená pri zvolení kontextovej položky.
|
void |
volbaPolozkyPonuky()
Alias pre
voľbaPoložkyPonuky . |
void |
voľbaPoložkyPonuky()
Spustená pri zvolení položky ponuky.
|
void |
volbaSystemovejIkony()
Alias pre
voľbaSystémovejIkony . |
void |
voľbaSystémovejIkony()
Spustená pri zvolení systémovej ikony.
|
void |
volbaSystemovejPolozky()
Alias pre
voľbaSystémovejPoložky . |
void |
voľbaSystémovejPoložky()
Spustená pri zvolení položky kontextovej ponuky systémovej ikony.
|
void |
volbaTlacidla()
Alias pre
voľbaTlačidla . |
void |
voľbaTlačidla()
Spustená pri zvolení tlačidla.
|
void |
vymazanie()
Spustená po vymazaní grafiky sveta.
|
void |
vzniklaChyba(GRobotException.Chyba chyba)
Táto reakcia je spustená v prípade, že bola nahlásená chyba
prostriedkami programovacieho rámca.
|
void |
zadanieZnaku()
Spustená pri zadaní znaku z klávesnice.
|
void |
zapisKonfiguraciu(Súbor subor)
Alias pre
zapíšKonfiguráciu . |
void |
zapíšKonfiguráciu(Súbor súbor)
Reakcia je vykonaná počas zápisu automatickej konfigurácie.
|
void |
zastavenieAnimacie(Obrázok obrázok)
Alias pre
zastavenieAnimácie . |
void |
zastavenieAnimácie(Obrázok obrázok)
Táto reakcia je spustená pri zastavení prehrávania animácie
obrázka.
|
boolean |
zatvorenie()
Alias pre
zavretie . |
boolean |
zavretie()
Spustená pri zatváraní okna, pričom vrátením návratovej
hodnoty
false sa dá tejto aktivite zabrániť. |
boolean |
zmenaFokusu(boolean vpred)
Spustená pri stlačení klávesovej kombinácie zmeny fokusu
niektorého z komponentov.
|
void |
zmenaPosunuListy()
Alias pre
zmenaPosunuLišty . |
void |
zmenaPosunuLišty()
Spustená pri zmene posunu rolovacej lišty.
|
void |
zmenaVelkostiOkna()
Alias pre
zmenaVeľkostiOkna . |
void |
zmenaVeľkostiOkna()
Spustená pri zmene veľkosti okna.
|
void |
zobrazenieOkna()
Spustená pri zobrazení okna.
|
void |
zrusenieUdajov()
Alias pre
zrušenieÚdajov . |
void |
zrusenieVstupu()
Alias pre
zrušenieÚdajov . |
void |
zrušenieÚdajov()
Spustená po stlačení klávesu
ESC vo vstupnom riadku
zobrazenom po zavolaní metódy začniVstup . |
void |
zrušenieVstupu()
Alias pre
zrušenieÚdajov . |
public ObsluhaUdalostí()
Predvolený konštruktor obsluhy udalostí.
GRobotException
– ak nie je povolená viacnásobná obsluha
udalostí a už bola vytvorená inštancia obsluhy udalostí
(identifikátor eventFactoryAlreadyExists
)public static final ObsluhaUdalostí aktívna()
Vráti aktuálny objekt obsluhy udalostí (aktívnu obsluhu udalostí)
alebo null
, ak nie je aktívna žiadna obsluha udalostí.
(Túto metódu nie je možné prekryť – neslúži na obsluhu žiadnej
udalosti.)
Svet.aktívnaObsluhaUdalostí()
public static final ObsluhaUdalosti aktivna()
Alias pre aktívna
.
public void tik()
Spustená v pravidelnom časovom intervale časovača, ktorý sa dá
odštartovať metódou spustiČasovač
a zastaviť metódou zastavČasovač
. Informácie o poslednej udalosti časovača sa dajú
získať pomocou metódy ÚdajeUdalostí.tik()
.
Časovač pre všetky roboty automaticky spúšta metódu pracuj
a časovač môže byť niektorými metódami
spustený automaticky. Pozri napríklad: rýchlosť
, uhlováRýchlosť
…
ÚdajeUdalostí.tik()
,
GRobot.tik()
,
Svet.tik()
public void klik()
Spustená pri kliknutí tlačidlom myši. Použite metódu
ÚdajeUdalostí.myš()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši
je aktualizovaný aj vo vnútorných premenných sveta.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void voľbaPoložkyPonuky()
Spustená pri zvolení položky ponuky. Na získanie naposledy zvolenej
položky ponuky použite metódu ÚdajeUdalostí.položkaPonuky()
alebo využite metódu aktivovaná
triedy PoložkaPonuky
na overenie aktivácie konkrétnej položky ponuky.
GRobot.voľbaPoložkyPonuky()
public void volbaPolozkyPonuky()
Alias pre voľbaPoložkyPonuky
.
public void voľbaKontextovejPoložky()
Spustená pri zvolení kontextovej položky. Na získanie naposledy
zvolenej kontextovej položky použite metódu ÚdajeUdalostí.kontextováPoložka()
alebo využite metódu aktivovaná
triedy KontextováPoložka
na
overenie aktivácie konkrétnej kontextovej položky.
GRobot.voľbaKontextovejPoložky()
public void volbaKontextovejPolozky()
Alias pre voľbaKontextovejPoložky
.
public void voľbaTlačidla()
Spustená pri zvolení tlačidla. Použite metódu ÚdajeUdalostí.tlačidlo()
na získanie inštancie naposledy zvoleného tlačidla, prípadne
metódu Tlačidlo
.
aktivované
()
na overenie toho, či
bolo toto tlačidlo naposledy aktivované. Praktický príklad
nájdete v opise triedy Tlačidlo
.
Tlačidlo
,
GRobot.voľbaTlačidla()
public void volbaTlacidla()
Alias pre voľbaTlačidla
.
public void zmenaPosunuLišty()
Spustená pri zmene posunu rolovacej lišty. Použite metódu
ÚdajeUdalostí.rolovaciaLišta()
na získanie inštancie posunutej lišty, metódu
ÚdajeUdalostí.posunRolovacejLišty()
na získanie konkrétnej
hodnoty posunu lišty alebo metódu
ÚdajeUdalostí.udalosťPosunu()
na získanie objektu udalosti rolovania
AdjustmentEvent
.
Praktický príklad nájdete v opise triedy RolovaciaLišta
.
RolovaciaLišta
,
GRobot.zmenaPosunuLišty()
public void zmenaPosunuListy()
Alias pre zmenaPosunuLišty
.
public void voľbaSystémovejIkony()
Spustená pri zvolení systémovej ikony. Použite metódu ÚdajeUdalostí.udalosťSystémovejIkony()
na získanie všetkých
údajov o tejto udalosti.
public void volbaSystemovejIkony()
Alias pre voľbaSystémovejIkony
.
public void voľbaSystémovejPoložky()
Spustená pri zvolení položky kontextovej ponuky systémovej ikony.
Použite metódu ÚdajeUdalostí.udalosťSystémovejIkony()
na získanie všetkých
údajov o tejto udalosti.
public void volbaSystemovejPolozky()
Alias pre voľbaSystémovejPoložky
.
public void vymazanie()
Spustená po vymazaní grafiky sveta. Táto reakcia môže
byť použitá na obnovenie (znovu nakreslenie) grafického obsahu
plátien po úplnom vymazaní. Je to
alternatívny spôsob. Robot má dostatok nástrojov (metód) na
kreslenie (a kreslenie každého robota môže byť nasmerované ako na
podlahu, tak na strop). Ak potrebujete využívať metódy
triedy Graphics2D
, použite metódu podlaha.grafika()
(resp. strop.grafika()
) na prístup k nej. Majte
na pamäti, že grafika plátna pracuje s odlišným súradnicovým
priestorom, než grafický programovací rámec.
V súčasnej verzii rámca je možné rozlišovať, ktoré plátno bolo
práve vymazané. Slúžia na to metódy údajov
udalostí: vymazanéPlátno()
a vymazanéPlátno(plátno)
GRobot.vymazanie()
public void prekreslenie()
Spustená pri (pred) prekreslení sveta. Táto reakcia môže byť
využitá na dokreslenie obsahu plátien
(ich „finálne úpravy“) pred prekreslením sveta. Robot má dostatok
nástrojov (metód) na kreslenie (a kreslenie každého robota môže
byť nasmerované ako na podlahu, tak na strop). Ak
potrebujete využívať metódy (nástroje) triedy Graphics2D
, použite metódu podlaha.grafika()
(resp. strop.grafika()
) na prevzatie grafického objektu, pomocou
ktorého môžete tiež dokresľovať obsah plátien (v podstate
rovnocenne ako pri kreslení pomocou robota, avšak treba mať na
pamäti, že grafika plátna pracuje s odlišným súradnicovým
priestorom, než grafický programovací rámec).
GRobot.prekreslenie()
public void dokreslenie()
Spustená po prekreslení sveta. Funguje podobne ako reakcia prekreslenie
, ibaže je spustená po prekreslení
sveta, tesne pred finálnym zobrazením grafiky v okne (na
obrazovke). Takže v tomto momente je čas na posledné finálne
úpravy obsahu, ktorý bude reálne zobrazený na obrazovke. Čokoľvek
sa v tomto momente pokúsite nakresliť na plátno podlahy alebo stropu, už nestihne byť
zobrazené v tomto pracovnom cykle, avšak môžete použiť grafický
objekt sveta (získaný metódou Svet.grafika()
) na dokreslenie (krátkodobého) grafického obsahu.
Treba podotknúť že spomenutý objekt grafika
pracuje
v súradnicovom priestore Javy a všetko, čo pomocou neho
nakreslíte, bude na obrazovke zobrazené len do najbližšieho
prekreslenia.
(O súradnicových priestoroch sa podrobnejšie píše napríklad
v opisoch metód GRobot.cesta()
, SVGpodpora.zapíš(…)
,
SVGpodpora.čítaj(meno)
a priebežne
v celej dokumentácii.)
GRobot.dokreslenie()
public void zobrazenieOkna()
Spustená pri zobrazení okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu ÚdajeUdalostí.okno()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.zobrazenieOkna()
public void skrytieOkna()
Spustená pri skrytí okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu ÚdajeUdalostí.okno()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
Upozornenie: Ak skryjete okno sveta a neponecháte systému žiadnu možnosť interakcie s aplikáciou (napríklad systémovú ikonu), tak virtuálny stroj Javy po chvíli Vašu aplikáciu (pri nečinnosti) automaticky ukončí.
GRobot.skrytieOkna()
public void presunutieOkna()
Spustená pri presunutí okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu ÚdajeUdalostí.okno()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.presunutieOkna()
public void zmenaVeľkostiOkna()
Spustená pri zmene veľkosti okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu ÚdajeUdalostí.okno()
.
Po vykonaní tejto metódy pre svet je v prípade, že sa pracovalo s výpismi textov na podlahu alebo strop, spustené automatické prekreslenie. Ak je automatické prekreslenie vypnuté, musí sa o prekreslenie sveta pri zmene veľkosti okna postarať programátor.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.zmenaVeľkostiOkna()
public void zmenaVelkostiOkna()
Alias pre zmenaVeľkostiOkna
.
public void aktiváciaOkna()
Spustená pri aktivácii okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.aktiváciaOkna()
public void aktivaciaOkna()
Alias pre aktiváciaOkna
.
public void deaktiváciaOkna()
Spustená pri deaktivácii okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.deaktiváciaOkna()
public void deaktivaciaOkna()
Alias pre deaktiváciaOkna
.
public void maximalizovanie()
Spustená pri maximalizovaní okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.maximalizovanie()
public void minimalizovanie()
Spustená pri minimalizovaní okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.minimalizovanie()
public void obnovenie()
Spustená pri obnovení okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.obnovenie()
public void otvorenie()
Spustená pri prvom zobrazení okna. Na získanie objektu
s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.otvorenie()
public boolean zavretie()
Spustená pri zatváraní okna, pričom vrátením návratovej
hodnoty false
sa dá tejto aktivite zabrániť. Na získanie
objektu s podrobnejšími údajmi o tejto udalosti použite metódu
ÚdajeUdalostí.aktivitaOkna()
.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
GRobot.zavretie()
,
Svet.zavrieť()
,
Svet.koniec()
public boolean zatvorenie()
Alias pre zavretie
.
public void ukončenie()
Spustená pri ukončení aplikácie. V tejto reakcii je možné vykonať niektoré záverečné upratovacie akcie, napríklad uloženie stavu aplikácie a podobne.
Priorita spúšťania tejto obsluhy udalosti prekrytej v niektorom robote a v obsluhe udalostí je upravená tak, že udalosť v obsluhe udalostí je spustená pred automatickým uložením konfigurácie a udalosť v robote (prípadne vo viacerých robotoch) po ňom.
GRobot.ukončenie()
public void ukoncenie()
Alias pre ukončenie
.
public void potvrdenieÚdajov()
Spustená po stlačení klávesu Enter
vo vstupnom riadku
zobrazenom po zavolaní metódy začniVstup
. Na získanie potvrdených údajov použite metódy
prevezmiReťazec
,
prevezmiCeléČíslo
alebo
prevezmiReálneČíslo
.
V prípade, že potvrdené údaje nie sú v správnom tvare (platí pre
celé alebo reálne číslo), je prislúchajúcou metódou „prevezmi“
vrátené null
.
Upozornenie: Táto metóda nepracuje
so štandardným vstupom údajov, ktorý je schopný prijímať údaje
z iného procesu. Pozri reakciu spracujRiadokVstupu
.
GRobot.potvrdenieÚdajov()
public void potvrdenieUdajov()
Alias pre potvrdenieÚdajov
.
public void potvrdenieVstupu()
Alias pre potvrdenieÚdajov
.
public void spracovaniePríkazu()
Spustená po pozitívnom spracovaní príkazu v interaktívnom režime.
GRobot.spracovaniePríkazu()
public void spracovaniePrikazu()
Alias pre spracovaniePríkazu
.
public void zrušenieÚdajov()
Spustená po stlačení klávesu ESC
vo vstupnom riadku
zobrazenom po zavolaní metódy začniVstup
.
Reakciou na zrušenie vstupu môže byť napríklad ukončenie primitívnej priamočiarej aplikácie
vyžadujúcej na svouju činnosť potvrdenie vstupu.
GRobot.zrušenieÚdajov()
public void zrusenieUdajov()
Alias pre zrušenieÚdajov
.
public void zrušenieVstupu()
Alias pre zrušenieÚdajov
.
public void zrusenieVstupu()
Alias pre zrušenieÚdajov
.
public void spracujRiadokVstupu(String riadokVstupu)
Asynchrónne prijíma údaje (ak sú k dispozícii) zo štandardného
vstupu (externého zdroja), ktorý bol aktivovaný metódou aktivujŠtandardnýVstup
(alebo
niektorou jej verziou).
Upozornenie: Táto metóda nepracuje
so zabudovaným vstupným riadkom programovacieho rámca. Pozri reakciu
potvrdenieÚdajov
.
riadokVstupu
– riadok údajov prijatý zo štandardného vstupuGRobot.spracujRiadokVstupu(String)
,
koniecVstupu()
,
Svet.aktivujŠtandardnýVstup()
,
Svet.aktivujŠtandardnýVstup(String)
,
Svet.štandardnýVstupAktívny()
,
Svet.čakajNaVstup()
public void koniecVstupu()
Táto reakcia je spustená len v prípade, že štandardný vstup
(aktivovaný metódou aktivujŠtandardnýVstup
alebo niektorou jej verziou) je konečný.
Jej spustenie znamená, že prúd údajov prijímaný zo štandardného
vstupu dosiahol svoj koniec.
public void vzniklaChyba(GRobotException.Chyba chyba)
Táto reakcia je spustená v prípade, že bola nahlásená chyba
prostriedkami programovacieho rámca. Medzi nich patrí
generovanie výnimiek programovacieho rámca (GRobotException
) a vnútorný mechanizmus hlásenia rôznych (chybových)
stavov rámca.
Poznámka: Všetky chyby sú zároveň zaznamenávané do denníka chýb.
Príklad:
Výpisy chýb môžu byť rôznych úrovní. Niektoré spôsoby ukazuje tento príklad.
import
knižnica.*;public
class
VzniklaChybaextends
GRobot
{private
VzniklaChyba() {obrázok
("obrazok-nejestvuje"
); }@
Overridepublic
void
vzniklaChyba
(GRobotException
.Chyba
chyba) {if
(null
!= chyba.správa
)Svet
.vypíšRiadok
(chyba.správa
);if
(null
!= chyba.výnimka
) {if
(null
== chyba.výnimka
.getMessage
()) Svet.vypíšRiadok
(GRobotException
.stackTraceToString
(chyba.výnimka
));else
Svet
.vypíšRiadok
(chyba.výnimka
.getMessage
()); }Svet
.vypíšRiadok
("———"
); }@
Overridepublic
void
klik
() {new
GRobotException
("Test výnimky"
,null
); }public
static
void
main(String
[] args) {new
VzniklaChyba(); } }
Výsledok:
Ukážka
výsledku výpisu chýb.
chyba
– inštancia obsahujúca podrobnosti o chybe; pozri GRobotException.Chyba
GRobot.vzniklaChyba(GRobotException.Chyba)
,
GRobotException
,
GRobotException.Chyba
public void stlačenieTlačidlaMyši()
Spustená pri stlačení tlačidla myši. Použite metódu
ÚdajeUdalostí.myš()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši
je aktualizovaný aj vo vnútorných premenných sveta.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void stlacenieTlacidlaMysi()
Alias pre stlačenieTlačidlaMyši
.
public void uvoľnenieTlačidlaMyši()
Spustená pri uvoľnení tlačidla myši. Použite metódu
ÚdajeUdalostí.myš()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši
je aktualizovaný aj vo vnútorných premenných sveta.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void uvolnenieTlacidlaMysi()
Alias pre uvoľnenieTlačidlaMyši
.
public void pohybMyši()
Spustená pri pohybe myši nad plátnom podlahy. Použite metódu
ÚdajeUdalostí.myš()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši
je aktualizovaný aj vo vnútorných premenných sveta.
public void pohybMysi()
Alias pre pohybMyši
.
public void ťahanieMyšou()
Spustená pri pohybe myši nad hlavným komponentom okna (pri svete
hovoríme často o plátnach) počas držania tlačidla myši.
Použite metódu ÚdajeUdalostí.myš()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši je
aktualizovaný aj vo vnútorných premenných sveta.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void tahanieMysou()
Alias pre ťahanieMyšou
.
public void rolovanieKolieskomMyši()
Spustená pri rolovaní kolieskom myši. Použite metódu ÚdajeUdalostí.myš()
alebo ÚdajeUdalostí.kolieskoMyši()
na
získanie podrobnejších údajov o tejto udalosti. Stav myši je
aktualizovaný aj vo vnútorných premenných sveta.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
ÚdajeUdalostí.tlačidloMyši1()
,
ÚdajeUdalostí.tlačidloMyši2()
,
ÚdajeUdalostí.tlačidloMyši3()
,
ÚdajeUdalostí.myš()
,
ÚdajeUdalostí.kolieskoMyši()
,
ÚdajeUdalostí.súradnicaMyšiX()
,
ÚdajeUdalostí.súradnicaMyšiY()
,
ÚdajeUdalostí.rolovanieKolieskomMyšiX()
,
ÚdajeUdalostí.rolovanieKolieskomMyšiY()
,
GRobot.rolovanieKolieskomMyši()
public void rolovanieKolieskomMysi()
Alias pre rolovanieKolieskomMyši
.
public boolean zmenaFokusu(boolean vpred)
Spustená pri stlačení klávesovej kombinácie zmeny fokusu
niektorého z komponentov. Použite metódu ÚdajeUdalostí.klávesnica()
na získanie
podrobnejších údajov o tejto udalosti alebo metódu ÚdajeUdalostí.komponentFokusu()
na
získanie komponentu, ktorý je aktuálnym vlastníkom fokusu v kontexte
pokusu o jeho zmenu touto udalosťou. Užitočné sú aj ďalšie metódy
triedy ÚdajeUdalostí
uvedené v zozname
nižšie.
Táto reakcia je volaná vždy pred reakciou stlačenieKlávesu
. Programátor v nej môže overiť, kde sa práve nachádza
reťaz komponentov fokusu a či ju chce dočasne prerušiť, alebo nie.
Podľa toho je povinný určiť návratovú hodnotu tejto reakcie:
true
– reťaz fokusu má pokračovať bez prerušenia
(programátor nepotreboval vykonať žiadnu akciu a aplikácia nemá v tejto
situácii nijako upravovať svoje predvolené správanie);false
– programátor prerušil reťaz fokusu – programátor
určil, či a kam sa má fokus presunúť, predvolený mechanizmus zmeny
fokusu bude potlačený.vpred
– ak je hodnotota tohto parametra rovná true
, tak
ide o udalosť zmeny fokusu vpred, v opačnom prípade je hodnota
parametra rovná false
ÚdajeUdalostí.klávesnica()
,
ÚdajeUdalostí.kláves()
,
ÚdajeUdalostí.kláves(int)
,
ÚdajeUdalostí.znak()
,
ÚdajeUdalostí.znak(char)
,
GRobot.zmenaFokusu(boolean)
public void stlačenieKlávesu()
Spustená pri stlačení klávesu. Použite metódu
ÚdajeUdalostí.klávesnica()
na získanie podrobnejších údajov o tejto udalosti.
Užitočné sú aj ďalšie metódy triedy ÚdajeUdalostí
uvedené v zozname nižšie.
Pre túto udalosť najmä kláves()
a kláves(int)
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void stlacenieKlavesu()
Alias pre stlačenieKlávesu
.
public void uvoľnenieKlávesu()
Spustená pri uvoľnení klávesu. Použite metódu
ÚdajeUdalostí.klávesnica()
na získanie podrobnejších údajov o tejto udalosti.
Užitočné sú aj ďalšie metódy triedy ÚdajeUdalostí
uvedené v zozname nižšie.
Pre túto udalosť najmä kláves()
a kláves(int)
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void uvolnenieKlavesu()
Alias pre uvoľnenieKlávesu
.
public void zadanieZnaku()
Spustená pri zadaní znaku z klávesnice. Nie každý kláves generuje
túto udalosť. Táto udalosť vzniká len pri stlačení a uvoľnení
klávesu, ktorý produkuje znak, to znamená, že pri klávesoch ako
kurzorové šípky, Shift
, Ctrl
, Cmd
a podobne
táto udalosť nevzniká. Použite metódu
ÚdajeUdalostí.klávesnica()
na získanie podrobnejších údajov o tejto udalosti.
Užitočné sú aj ďalšie metódy triedy ÚdajeUdalostí
uvedené v zozname nižšie.
Pre túto udalosť najmä znak()
a znak(char)
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void klávesováSkratka()
Spustená pri zvolení klávesovej skratky. Použite metódu ÚdajeUdalostí.príkazSkratky()
na
získanie textu príkazu súvisiaceho s touto klávesovou skratkou,
prípadne metódu ÚdajeUdalostí.udalosťSkratky()
na získanie doplňujúcich údajov
o tejto udalosti.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
Poznámka: Príklad použitia nájdete
napríklad v opise vnorenej triedy Svet.PríkazovýRiadok
.
public void klavesovaSkratka()
Alias pre klávesováSkratka
.
public void ťahanieSúborov()
Táto reakcia je spúšťaná počas ťahania súboru a lebo súborov nad hlavným komponentom okna. To umožňuje aplikácii v prípade potreby graficky zareagovať.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
public void tahanieSuborov()
Alias pre ťahanieSúborov
.
public void pustenieSúboru(String súbor)
Spustená po dokončení ťahania súboru z externej aplikácie. Ak bolo z externej aplikácie potiahnutých viac súborov, tak bude táto reakcia spustená pre každý z nich osobitne.
Na zistenie toho, v ktorom okne sa táto udalosť vyskytla
použite metódu ÚdajeUdalostí.oknoUdalosti()
. (Pozor, nezamieňať s metódou
ÚdajeUdalostí.okno()
,
ktorá nesie informáciu o komponente okna a je relevantná len
pri niektorých udalostiach.)
Ak sa udalosť vyskytla v hlavnom okne – vo svete, tak
metóda ÚdajeUdalostí.oknoUdalosti()
vráti null
.
Poznámka: Od verzie 2.19 je možné zisťovať
akciu pustenia súboru metódou akciaPustenia
.
Príklad:
Toto je najjednoduchší príklad spracovania súborov potiahnutých a pustených nad plátnom.
@
Overridepublic
void
pustenieSúboru
(String
súbor) {Svet
.vypíšRiadok
(súbor); }
Príklad:
Tento príklad je o poznanie zložitejší. Umožňuje vykonávať základné transformácie obrázka (posunutie, otočenie, mierka) prostredníctvom aktuálneho robota. Tiež spravuje vnútornú pamäť rámca, čo umožňuje príkladu fungovať kontinuálne/dlhodobo (bez nevyhnutnosti reštartovania aplikácie) aj po vystriedaní väčšieho množstva obrázkov.
Tento príklad sa spomína aj v opisoch metód klávesnica
, myš
a kolieskoMyši
.
V súvislosti s tým upriamujeme pozornosť na metódu príznakyMyši
(v tomto príklade), ktorá ukazuje možný spôsob
spracovania príznakov udalostí myši. Zaujímavá je implementácia
príkazu skratkaPonuky
(v tomto príklade „vypnutá“ –
umiestnená v komentároch), ktorá je spracovaná platformovo závisle
(z dôvodu zvýšenia komfortu používateľov v súvislosti s obvyklými
postupmi na rôznych platformách).
import
knižnica.*;public
class
TransformácieObrázkaextends
GRobot
{private
TransformácieObrázka() {super
("Transformácie obrázka"
);skry
();if
(Svet
.prvéSpustenie
())Svet
.zbaľ
();Svet
.vystreď
();Svet
.nekresli
();veľkosťDoma
(veľkosť
()); }
private
String
názov =null
;private
Obrázok
obrázok =null
;private
void
obnov() {Svet
.vymaž
(); obrázok(obrázok);Svet
.prekresli
(); }private
void
otvor(String
súbor) {if
(Súbor
.jestvuje
(súbor)) {if
(null
!= názov) {Svet
.uvoľni
(názov); názov =null
; }if
(null
!= obrázok) {Svet
.uvoľni
(obrázok); obrázok =null
; } obrázok =Obrázok
.čítaj
(súbor); názov = súbor;domov
(); obnov(); }else
Svet
.chyba
("Súbor nejestvuje."
); }@
Overridepublic
void
pustenieSúboru
(String
súbor) { otvor(súbor); }
private
Bod
myš1 =null
;// private boolean skratkaPonuky = false;
// private boolean alt = false;
// private boolean shift = false;
private
boolean
ľavé =false
;// private boolean pravé = false;
// private boolean stredné = false;
private
void
príznakyMyši() {// skratkaPonuky =
// Kláves.SKRATKA_PONUKY == Kláves.CTRL_MASK ?
// ÚdajeUdalostí.myš().isControlDown() :
// ÚdajeUdalostí.myš().isMetaDown();
// alt = ÚdajeUdalostí.myš().isAltDown();
// shift = ÚdajeUdalostí.myš().isShiftDown();
ľavé =ÚdajeUdalostí
.tlačidloMyši
(ĽAVÉ
);// pravé = ÚdajeUdalostí.tlačidloMyši(PRAVÉ);
// stredné = ÚdajeUdalostí.tlačidloMyši(STREDNÉ);
}@
Overridepublic
void
stlačenieTlačidlaMyši
() { myš1 =ÚdajeUdalostí
.polohaMyši
(); }@
Overridepublic
void
ťahanieMyšou
() { príznakyMyši();Bod
myš2 =ÚdajeUdalostí
.polohaMyši
();if
(null
!= myš1) {if
(ľavé) {skoč
(myš2.polohaX
() - myš1.polohaX
(), myš2.polohaY
() - myš1.polohaY
()); }else
// if (pravé)
{double
uhol1 =smerNa
(myš1);double
uhol2 =smerNa
(myš2);vľavo
(uhol2 - uhol1); } obnov(); } myš1 = myš2; }@
Overridepublic
void
rolovanieKolieskomMyši
() {// int Δx = ÚdajeUdalostí.rolovanieKolieskomMyšiX();
int
Δy =ÚdajeUdalostí
.rolovanieKolieskomMyšiY
();double
zmena =veľkosť
() + Δy;if
(zmena >100
) zmena =100
;else
if
(zmena <1
) zmena =1
;veľkosť
(zmena); obnov(); }
public
static
void
main(String
[] args) {Svet
.skry
();Svet
.použiKonfiguráciu
("TransformácieObrázka.cfg"
);new
TransformácieObrázka();Svet
.zobraz
(); } }
súbor
– úplná cesta a meno súboruGRobot.pustenieSúboru(String)
public void pustenieSuboru(String súbor)
Alias pre pustenieSúboru
.
public void ťahanieUkončené(JComponent zdroj, Transferable údaje, int akcia)
Spustená po dokončení ťahania súboru alebo súborov do externej
aplikácie. Táto udalosť by mala vzniknúť po pustení ťahaných súborov
z tejto aplikácie (aplikácie vytvorenej s týmto programovacím rámcom)
do inej/externej aplikácie. Ťahanie by malo byť spustené metódou sveta:
ťahajSúbory
. Do tejto reakcie
prídu údaje súvisiace s týmto procesom. Zdroj bude pravdepodobne
null
, pretože metóda sveta ho neposiela. Je možné, že aj
údaje budú null
, preto je vhodné túto udalosť spárovať
s akciou inak.
zdroj
– komponent, ktorý bol zdrojom údajovúdaje
– údaje, ktoré boli prenesené, prípadne null
, ak
je akcia NONE
.akcia
– akcia, ktorá bola (s údajmi) vykonaná; pozri aj opis metódy
ťahajSúbory
GRobot.ťahanieUkončené(JComponent, Transferable, int)
public void tahanieUkoncene(JComponent zdroj, Transferable údaje, int akcia)
Alias pre ťahanieUkončené
.
public Color farbaAktívnehoSlova(String slovo)
Spustená pri overovaní zmeny farby, ktorou má byť vypísané určité
(zadané) aktívne slovo vnútornej konzoly. S pomocou tejto reakcie je
možné paušálne meniť farbu všetkých aktívnych slov, odlišovať farby
takých slov, ktoré už boli používateľom zvolené od takých, ktoré
doteraz používateľ ani raz nezvolil a podobne. Ak si farbu aktívneho
slova neželáme zmeniť, treba vrátiť hodnotu null
.
slovo
– identifikátor toho aktívneho slova vnútornej konzoly,
ktorého farba má byť ovplyvnenánull
GRobot.farbaAktívnehoSlova(String)
,
Plátno.vypíšAktívneSlovo(String, Object[])
public Color farbaAktivnehoSlova(String slovo)
Alias pre farbaAktívnehoSlova
.
public void aktiváciaOdkazu()
Spustená po aktivácii hypertextového odkazu umiestneného v rámci
niektorej z inštancií triedy PoznámkovýBlok
.
Užitočné doplňujúce údaje súvisiace s touto udalosťou poskytujú metódy
poslednýOdkaz
a poslednýPoznámkovýBlok
.
Metóda otvorWebovýOdkaz
umožňuje otvorenie poskytnutého odkazu v predvolenom webovom
prehliadači.
Upozornenie: Na to, aby klikanie na webové
odkazy v poznámkovom bloku fungovalo, nesmie byť poznámkový blok
v režime úprav – pozri metódy upraviteľný
, upravuj
a neupravuj
.
Príklad:
Tento príklad ukazuje minimálne požiadavky, ktoré musia byť
splnené na to, aby fungovalo klikanie na webové odkazy v poznámkovom
bloku. Nepotrebnými bonusmi v tomto príklade sú len zmena veľkosti
plátna (volaním nadradeného konštruktora robota – super
v prvom riadku konštruktora odvodenej triedy), nastavenie
automatického rozťahovania (šírky a výšky) poznámkového bloku,
prípadne aj skrytie hlavného robota (podľa toho, za akú veľkú
prekážku považujeme jeho vizuálna prítomnosť na plátne).
Ostatné časti príkladu sú nevyhnutné.
import
knižnica.*;public
class
OtvoriťWebovýOdkazextends
GRobot
{private
OtvoriťWebovýOdkaz() {super
(Svet
.šírkaZariadenia
(),Svet
.výškaZariadenia
());// Nie je nevyhnutné.
PoznámkovýBlok
blok =new
PoznámkovýBlok
(); blok.roztiahniNaŠírku
();// Nie je nevyhnutné.
blok.roztiahniNaVýšku
();// Nie je nevyhnutné.
blok.html
("<a href=\"https://pdf.truni.sk/\">Klikni na odkaz.</a>"
); blok.neupravuj
();skry
();// Tiež je možné vynechať.
}@
Overridepublic
void
aktiváciaOdkazu
() {Svet
.otvorWebovýOdkaz
(ÚdajeUdalostí
.poslednýOdkaz
()); }public
static
void
main(String
[] args) {new
OtvoriťWebovýOdkaz(); } }
Výsledok:
Výsledok príkladu použitia
aktivácie odkazu.
Poznámka: V príklade je použité prekrytie
reakcie aktiváciaOdkazu
v triede
odvodenej od triedy GRobot
. Princíp je však rovnaký
aj pri použití reakcie z triedy ObsluhaUdalostí
.
GRobot.aktiváciaOdkazu()
public void aktivaciaOdkazu()
Alias pre aktiváciaOdkazu
.
public boolean konfiguráciaZmenená()
Výsledok (návratová hodnota) tejto reakcie môže byť overená pred
zápisom automatickej
konfigurácie. Ak iné súčasti programovacieho rámca oznámia, že
konfiguráciu je potrebné uložiť, tak táto reakcia vôbec nemusí byť
spustená. V prípade, že je spustená, tak ak je jej návratová hodnota
rovná true
, tak bude spustená reakcia
zapíšKonfiguráciu
.
(V opačnom prípade by bola uvedená reakcia spustená len
vtedy, ak by bola zmenená niektorá z predvolených položiek
automatickej
konfigurácie – t. j. napríklad používateľ by presunul hlavné okno
aplikácie, zmenil jeho veľkosť alebo by bol registrovaný niektorý
robot na uloženie konfigurácie.)
Príklad použitia je uvedený v hlavnej sekcii opisu triedy ObsluhaUdalostí
.
Upozornenie: Pri prekrývaní tejto reakcie majte na pamäti, že nie je garantované jej automatické vykonanie pri ukončovaní aplikácie (ak vyššia vrstva zistí, že konfigurácia bola zmenená, tak ďalej nevyšetruje, či ju treba, alebo netreba ukladať a automaticky pristúpi k procesu uloženia konfigurácie). Vložte do tela tejto reakcie len taký kód, ktorý rýchlo overí, či nastali nejaké zmeny v konfigurácii, ktoré treba uložiť a vráti túto informáciu vyššej vrstve.
true
čítajKonfiguráciu(Súbor)
,
zapíšKonfiguráciu(Súbor)
,
GRobot.konfiguráciaZmenená()
,
Svet.použiKonfiguráciu()
public boolean konfiguraciaZmenena()
Alias pre konfiguráciaZmenená
.
public void čítajKonfiguráciu(Súbor súbor) throws IOException
Reakcia je vykonaná počas čítania automatickej konfigurácie. Je určená na
prečítanie hodnôt vlastnej konfigurácie. Príklad použitia je
uvedený v hlavnej sekcii opisu triedy ObsluhaUdalostí
.
súbor
– inštancia triedy Súbor
reprezentujúca
otvorený konfiguračný súbor pripravený na čítanie údajovIOException
– ak vznikla chyba vo vstupno-výstupnej
operáciikonfiguráciaZmenená()
,
zapíšKonfiguráciu(Súbor)
,
GRobot.čítajKonfiguráciu(Súbor)
,
Svet.použiKonfiguráciu()
public void citajKonfiguraciu(Súbor subor) throws IOException
Alias pre čítajKonfiguráciu
.
IOException
public void zapíšKonfiguráciu(Súbor súbor) throws IOException
Reakcia je vykonaná počas zápisu automatickej konfigurácie. Je určená na
zápis hodnôt vlastnej konfigurácie. Príklad použitia je uvedený
v hlavnej sekcii opisu triedy ObsluhaUdalostí
.
súbor
– inštancia triedy Súbor
reprezentujúca
otvorený konfiguračný súbor pripravený na zápis údajovIOException
– ak vznikla chyba vo vstupno-výstupnej
operáciikonfiguráciaZmenená()
,
čítajKonfiguráciu(Súbor)
,
GRobot.zapíšKonfiguráciu(Súbor)
,
Svet.použiKonfiguráciu()
public void zapisKonfiguraciu(Súbor subor) throws IOException
Alias pre zapíšKonfiguráciu
.
IOException
public void sekvencia(int kódSpracovania, Object zdroj, Object cieľ, long stav, long celkovo)
Táto reakcia súvisí s časovo náročným spracovaním údajov počas
práce s pevným diskom. Napríklad s čítaním
a zápisom
sekvencie
PNG súborov (pozri triedu Obrázok
a jej metódy
čítaj(súbor)
a ulož(súbor, prepísať)
)
alebo kopírovaním
súborov a podobne. Typ udalosti, ktorá spôsobila spustenie tejto
reakcie je určený prvým parametrom – kódSpracovania
.
Ostatné parametre sú naplnené podľa ich relevantnosti.
kódSpracovania
– obsahuje kód činnosti, ktorá spôsobila
vznik tejto udalosti; aktuálne platné kódy sú:
ČÍTANIE_PNG_SEKVENCIE
,
CHYBA_ČÍTANIA_PNG_SEKVENCIE
, ZÁPIS_PNG_SEKVENCIE
, ČÍTANIE_GIF_ANIMÁCIE
, ZÁPIS_GIF_ANIMÁCIE
, KOPÍROVANIE_SÚBOROV
, PRIPÁJANIE_SÚBOROV
, POROVNANIE_SÚBOROV
, ODOVZDANIE_ÚDAJOV
a PREVZATIE_ÚDAJOV
zdroj
– objekt súvisiaci so zdrojom alebo null
;
napríklad v prípade kopírovania súborov je to reťazec s názvom zdrojového súboru, v prípade zápisu
PNG sekvencie je to obrázkový
objekt so zdrojovou snímkou animácie a podobnecieľ
– objekt súvisiaci s cieľom alebo null
;
napríklad pri kopírovaní súborov je to reťazec s názvom cieľového súboru; v prípade čítania PNG
sekvencie je to obrázkový objekt
s cieľovou snímkou animácie (čiže tou, do ktorej sú ukladané
prečítané údaje) a podobnestav
– hodnota vyjadrujúca aktuálne spracovaný objem údajov
alebo -1
, ak táto hodnota nie je známa alebo je
irelevantná; môže to byť počet spracovaných bajtov, poradové
číslo snímky a podobnecelkovo
– hodnota vyjadrujúca celkový objem údajov, ktorý má byť
spracovaný alebo -1
, ak táto hodnota nie je známa
alebo je irelevantná; môže to byť veľkosť súboru, celkový počet
snímok a podobnepublic void zastavenieAnimácie(Obrázok obrázok)
Táto reakcia je spustená pri zastavení prehrávania animácie
obrázka. Reakcia prijíma inštanciu obrázka, ktorého prehrávanie bolo
zastavené, pričom zastavenie prehrávania môže byť iniciované
automaticky (pozri aj metódu obrázka zastav
)
alebo na podnet používateľa (programátora).
obrázok
– inštancia obrázka, ktorého prehrávanie bolo zastavenépublic void zastavenieAnimacie(Obrázok obrázok)
Alias pre zastavenieAnimácie
.
public void ukončenieProcesu(Svet.PríkazovýRiadok príkazovýRiadok, int návratovýKód)
Táto reakcia je spustená po ukončení externého procesu, ktorý
spustila zadaná inštancia triedy PríkazovýRiadok
. Číselný kód, ktorý prijíma táto reakcia v druhom
parametri je návratový kód, ktorý vrátil proces pri svojom
ukončení.
príkazovýRiadok
– inštancia príkazového riadka, ktorá proces
spustila (jej zdedenými metódami
ExecuteShellCommand.getRunCommand
,
ExecuteShellCommand.getRunArguments
,
ExecuteShellCommand.getCommandArray
a ExecuteShellCommand.getRunEnvironment
sa dajú
získať doplnkové informácie o procese v čase jeho spúšťania)návratovýKód
– kód, ktorý vrátil externý proces pri ukončenípublic void ukoncenieProcesu(Svet.PríkazovýRiadok príkazovýRiadok, int návratovýKód)
Alias pre ukončenieProcesu
.
public boolean ladenie(int riadok, String príkaz, int správa)
Táto reakcia je vykonávaná v režime ladenia. Návratová hodnota
reakcie je odpoveďou na otázku položenú režimom ladenia nadradenému procesu
prostredníctvom parametra správa
. Hodnota parametra
správa
môže byť jedna z nasledujúcich:
VYPÍSAŤ_PREMENNÉ | – | Má režim ladenia vypísať obsah všetkých premenných (pred začatím vykonávania skriptu)? |
VYPÍSAŤ_MENOVKY | – | Má režim ladenia vypísať (pred začatím vykonávania skriptu) definície všetkých menoviek, ktoré našiel počas analýzy skriptu? |
VYPÍSAŤ_RIADOK | – | Má režim ladenia vypísať aktuálny riadok skriptu? |
ČAKAŤ | – | Má režim ladenia čakať pred vykonaním riadka skriptu? Ak je odpoveď „áno,“ tak je táto správa posielaná opakovane (každých 350 ms). |
PRERUŠIŤ | – | Má režim prerušiť vykonávanie skriptu? |
ZABRÁNIŤ_VYKONANIU | – | Má režim v poslednej chvíli zabrániť vykonaniu príkazu s konkrétnymi hodnotami argumentov? |
VYPÍSAŤ_PRÍKAZ | – | Má režim vypísať ozvenu potvrdeného príkazu interaktívneho režimu? |
VYKONAŤ_PRÍKAZ | – | Má režim vykonať potvrdený príkaz interaktívneho režimu? |
UKONČENIE_SKRIPTU | – | Vykonávanie skriptu v samostatnom vlákne oznamuje, že jeho činnosť bola ukončená (bez chyby). |
UKONČENIE_CHYBOU | – | Vykonávanie
skriptu v samostatnom vlákne oznamuje, že jeho činnosť bola
ukončená chybou. V parametri riadok je číslo riadka, na
ktorom vznikla chyba a reťazec parametra príkaz obsahuje
v tomto prípade jednoduchý text chybového hlásenia. |
VYPÍSAŤ_SKRIPT | – | Má režim ladenia vypísať úplné znenie aktuálne vykonávaného skriptu? |
ČÍSELNÁ_PREMENNÁ FAREBNÁ_PREMENNÁ POLOHOVÁ_PREMENNÁ REŤAZCOVÁ_PREMENNÁ | – | Má režim vypísať obsah premennej prislúchajúceho údajového typu? Táto otázka vznikne vždy, keď sa zmení hodnota premennej. |
Ak je režim ladenia
zapnutý počas interaktívneho režimu, tak pred vykonaním každého potvrdeného
riadka vznikne otázka typu VYKONAŤ_PRÍKAZ
.
Príklad:
import
knižnica.*;public
class
RežimLadeniaInteraktívneextends
GRobot
{private
RežimLadeniaInteraktívne() {interaktívnyRežim
(true
);Svet
.režimLadenia
(true
);Svet
.vypíš
(this
);new
ObsluhaUdalostí
() {@
Overridepublic
void
potvrdenieÚdajov
() {Farba
záloha =Svet
.farbaTextu
();Svet
.farbaTextu
(červená);Svet
.vypíšRiadok
("Chyba"
);Svet
.farbaTextu
(záloha); }@
Overridepublic
boolean
ladenie
(int
riadok,String
príkaz,int
správa) {switch
(správa) {case
VYPÍSAŤ_PRÍKAZ
:case
VYKONAŤ_PRÍKAZ
:return
true
; }if
(správa <0
)return
true
;Farba
záloha =Svet
.farbaTextu
();Svet
.farbaTextu
(purpurová);Svet
.vypíšRiadok
(" × "
, príkaz);Svet
.farbaTextu
(záloha);return
false
; } };Svet
.registrujRobot
();Svet
.čítajKonfiguráciuSveta
(); }public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
();Svet
.nekresli
();new
RežimLadeniaInteraktívne();Svet
.kresli
();Svet
.aktivujVstupnýRiadok
(); } }
Poznámka: Komplexnejší príklad ladenia je
v opise triedy Skript
v sekcii Príklad ladenia
skriptov.
riadok
– poradové číslo riadka skriptu alebo hodnota −1
(ktorá signalizuje, že číslo riadka nie je známe)príkaz
– príkaz skriptu, prípadne názov premennejspráva
– typ správy, na ktorú sa režim pokúša získať odpoveď
od nadradeného procesu (pozri vyššie)správa
; true
– kladná odpoveď na
niektorú z vyššie položených otázok; false
– záporná
odpoveď na niektorú z vyššie položených otázokSvet.interaktívnyRežim(boolean)
,
Svet.interaktívnaInštancia(String)
,
Svet.režimLadenia(boolean)
,
Svet.vykonajPríkaz(String)
,
Svet.vykonajSkript(String[])