public static class GRobot.ObsluhaUdalostí extends Object
new
ObsluhaUdalostí
() {@
Overridepublic
void
tik
() {}@
Overridepublic
void
klik
() {}@
Overridepublic
void
voľbaPoložkyPonuky
() {}@
Overridepublic
void
voľbaKontextovejPoložky
() {}@
Overridepublic
void
voľbaTlačidla
() {}@
Overridepublic
void
vymazanie
() {}@
Overridepublic
void
prekreslenie
() {}@
Overridepublic
void
presunutieOkna
() {}@
Overridepublic
void
zmenaVeľkostiOkna
() {}@
Overridepublic
void
aktiváciaOkna
() {}@
Overridepublic
void
deaktiváciaOkna
() {}@
Overridepublic
void
ukončenie
() {}@
Overridepublic
void
potvrdenieÚdajov
() {}@
Overridepublic
void
zrušenieÚdajov
() {}@
Overridepublic
void
stlačenieTlačidlaMyši
() {}@
Overridepublic
void
uvoľnenieTlačidlaMyši
() {}@
Overridepublic
void
pohybMyši
() {}@
Overridepublic
void
ťahanieMyšou
() {}@
Overridepublic
void
rolovanieKolieskomMyši
() {}@
Overridepublic
void
stlačenieKlávesu
() {}@
Overridepublic
void
uvoľnenieKlávesu
() {}@
Overridepublic
void
zadanieZnaku
() {}@
Overridepublic
void
klávesováSkratka
() {}@
Overridepublic
void
ťahanieSúborov
() {}@
Overridepublic
void
pustenieSúboru
(String súbor) {}@
Overridepublic
java.awt.Color
farbaAktívnehoSlova
(String
slovo) {return
null
; }// atď.
};
Musí byť presne dodržaná syntax metód:
@
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) príslušná udalosť (napríklad používateľ stlačí kláves,
tlačidlo myši a podobne…).
Od verzie 1.49 je možné vytváranie obsluhy udalostí obísť a to tak,
že budú podobným spôsobom prekryté metódy hlavného robota, ktoré sú na tento účel pripravené:
GRobot
.
tik
()
,
GRobot
.
klik
()
…
Jedninou metódou, ktorú hlavný robot
neposkytuje je metóda ladenie
.
Pri ostatných metódach 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 k spracovaniu
udalosti hlavným robotom ani nedôjde.
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. Robotovi 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š
(); } };
Ďalšie udalosti
Udalosti zverejnené vo vyššie uvedenom zozname môžeme považovať za
„štandardné“. (Z pohľadu skupiny tried grafického robota.) Obsluha
udalostí podporuje ešte dve ďalšie udalosti, s pomocou ktorých je možné
využiť automaticky vytváraný konfiguračný súbor skupiny tried
grafického robota. 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
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 načítali pri jej opätovnom štarte), je potrebné prekryť (naprogramovať obsah) všetkých troch reakcií:public
class
TestKonfigurácieGRobot {
// 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 (načítanej)
// hodnoty vlastnosti. S ním budeme pracovať len pri načítaní
// počiatočnej hodnoty a overení toho, či došlo ku zmene hodnoty
// sledovanej vlastnosti.
//
// 2. Prekryjeme trojicu rekacií: konfiguráciaZmenená, zapíšKonfiguráciu
// a čítajKonfiguráciu.
// A) konfiguráciaZmenená – poskytuje od nás skupine tried grafického
// robota 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 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
načí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ť != načí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 načítanáVlastnosť, ktorá slúži ako
// detektor zmien a ktorá je vyhodnocovaná v reakcii
// konfiguráciaZmenená.
vlastnosť = načítanáVlastnosť =súbor
.čítajVlastnosť
("vlastnosť"
, vlastnosť).booleanValue
();// ...
} };// Pre korektnosť je po načí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 nunté uviesť parameter
Súbor
aj klauzulu throws
.
Výnimka z pravidla jedinej obsluhy udalostí
Pôvodne nebolo možné v tomto smere v skupine tried grafického
robota 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á. Vo verzii 1.30 pribudla možnosť
povolenia
vytvárania viacerých inštancií obsluhy udalostí. 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í() |
Modifikátor a typ | Metóda a opis |
---|---|
void |
aktivaciaOkna()
Alias pre
aktiváciaOkna . |
void |
aktiváciaOkna()
Spustená pri aktivácii okna sveta.
|
static GRobot.ObsluhaUdalosti |
aktivna()
Alias pre
aktívna . |
static GRobot.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(GRobot.Súbor subor)
Alias pre
čítajKonfiguráciu . |
void |
čítajKonfiguráciu(GRobot.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 sveta.
|
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.
|
boolean |
ladenie(int riadok,
String príkaz,
int správa)
Táto reakcia je vykonávaná v režime ladenia.
|
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 sveta.
|
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 |
spracovaniePrikazu()
Alias pre
spracovaniePríkazu . |
void |
spracovaniePríkazu()
Spustená po pozitívnom spracovaní príkazu v interaktívnom režime.
|
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 plátnom podlahy 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
plátnom.
|
void |
tik()
Spustená v pravidelnom časovom intervale časovača, ktorý je možné
odštartovať metódou
spustiČasovač a zastaviť metódou zastavČasovač . |
void |
ukoncenie()
Alias pre
ukončenie . |
void |
ukončenie()
Spustená pri ukončení aplikácie.
|
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 |
volbaTlacidla()
Alias pre
voľbaTlačidla . |
void |
voľbaTlačidla()
Spustená pri zvolení tlačidla.
|
void |
vymazanie()
Spustená po vymazaní grafiky sveta.
|
void |
zadanieZnaku()
Spustená pri zadaní znaku z klávesnice.
|
void |
zapisKonfiguraciu(GRobot.Súbor subor)
Alias pre
zapíšKonfiguráciu . |
void |
zapíšKonfiguráciu(GRobot.Súbor súbor)
Reakcia je vykonaná počas zápisu automatickej konfigurácie.
|
void |
zmenaVelkostiOkna()
Alias pre
zmenaVeľkostiOkna . |
void |
zmenaVeľkostiOkna()
Spustená pri zmene veľkosti okna sveta.
|
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 static final GRobot.ObsluhaUdalostí aktívna()
null
, ak nie je aktívna žiadna obsluha udalostí.
(Túto metódu nie je možné prekryť – neslúži na obsluhu žiadnej
udalosti.)public static final GRobot.ObsluhaUdalosti aktivna()
aktívna
.public void tik()
spustiČasovač
a zastaviť metódou zastavČasovač
. Informácie o poslednej udalosti časovača je možné
získať pomocou metódy ÚdajeUdalostí.tik()
.
Časovač pre všetkých robotov automaticky spúšta metódu pracuj
a časovač môže byť taktiež niektorými
metódami automaticky spustený. Pozri napríklad: rýchlosť
, uhlováRýchlosť
…
GRobot.tik()
public void klik()
Ú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 voľbaPoložkyPonuky()
ÚdajeUdalostí.položkaPonuky()
alebo Svet.poslednáPoložkaPonuky()
na získanie naposledy zvolenej
položky ponuky 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()
voľbaPoložkyPonuky
.public void voľbaKontextovejPoložky()
ÚdajeUdalostí.kontextováPoložka()
alebo Svet.poslednáKontextováPoložka()
na získanie naposledy zvolenej kontextovj položky.GRobot.voľbaKontextovejPoložky()
public void volbaKontextovejPolozky()
voľbaKontextovejPoložky
.public void voľbaTlačidla()
Ú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 naposledny aktivované. Praktický príklad
nájdete v opise triedy Tlačidlo
.
GRobot.Tlačidlo
,
GRobot.voľbaTlačidla()
public void volbaTlacidla()
voľbaTlačidla
.public void vymazanie()
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é roboty.GRobot.vymazanie()
public void prekreslenie()
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é roboty).GRobot.prekreslenie()
public void dokreslenie()
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.GRobot.dokreslenie()
public void presunutieOkna()
ÚdajeUdalostí.okno()
.GRobot.presunutieOkna()
public void zmenaVeľkostiOkna()
ÚdajeUdalostí.okno()
. (Po vykonaní tejto
metódy 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.)GRobot.zmenaVeľkostiOkna()
public void zmenaVelkostiOkna()
zmenaVeľkostiOkna
.public void aktiváciaOkna()
ÚdajeUdalostí.aktivitaOkna()
.
GRobot.aktiváciaOkna()
public void aktivaciaOkna()
aktiváciaOkna
.public void deaktiváciaOkna()
ÚdajeUdalostí.aktivitaOkna()
.
GRobot.deaktiváciaOkna()
public void deaktivaciaOkna()
deaktiváciaOkna
.public void ukončenie()
Od verzie 1.50 je upravená priorita spúšťania tejto obsluhy udalosti v hlavnom robotovi a v obsluhe udalostí. Udalosť v obsluhe udalostí je spustená pred automatickým uložením konfigurácie a udalosť v hlavnom robotovi po ňom.
GRobot.ukončenie()
public void ukoncenie()
ukončenie
.public void potvrdenieÚdajov()
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 príslušnou metódou „prevezmi“ vrátené
null
.GRobot.potvrdenieÚdajov()
public void potvrdenieUdajov()
potvrdenieÚdajov
.public void potvrdenieVstupu()
potvrdenieÚdajov
.public void spracovaniePríkazu()
GRobot.spracovaniePríkazu()
public void spracovaniePrikazu()
spracovaniePríkazu
.public void zrušenieÚdajov()
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()
zrušenieÚdajov
.public void zrušenieVstupu()
zrušenieÚdajov
.public void zrusenieVstupu()
zrušenieÚdajov
.public void stlačenieTlačidlaMyši()
Ú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 stlacenieTlacidlaMysi()
stlačenieTlačidlaMyši
.public void uvoľnenieTlačidlaMyši()
Ú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 uvolnenieTlacidlaMysi()
uvoľnenieTlačidlaMyši
.public void pohybMyši()
Ú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()
pohybMyši
.public void ťahanieMyšou()
Ú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 tahanieMysou()
ťahanieMyšou
.public void rolovanieKolieskomMyši()
Ú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. Keď chcete
obnoviť alebo zapnúť rolovanie textov vnútornej konzoly (stropu
alebo podlahy), použite v tele tejto reakcie metódu plátna rolujTexty
.
GRobot.ÚdajeUdalostí.tlačidloMyši1()
,
GRobot.ÚdajeUdalostí.tlačidloMyši2()
,
GRobot.ÚdajeUdalostí.tlačidloMyši3()
,
GRobot.ÚdajeUdalostí.myš()
,
GRobot.ÚdajeUdalostí.kolieskoMyši()
,
GRobot.ÚdajeUdalostí.súradnicaMyšiX()
,
GRobot.ÚdajeUdalostí.súradnicaMyšiY()
,
GRobot.ÚdajeUdalostí.rolovanieKolieskomMyšiX()
,
GRobot.ÚdajeUdalostí.rolovanieKolieskomMyšiY()
,
GRobot.rolovanieKolieskomMyši()
public void rolovanieKolieskomMysi()
rolovanieKolieskomMyši
.public void stlačenieKlávesu()
Ú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)
public void stlacenieKlavesu()
stlačenieKlávesu
.public void uvoľnenieKlávesu()
Ú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)
public void uvolnenieKlavesu()
uvoľnenieKlávesu
.public void zadanieZnaku()
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)
public void klávesováSkratka()
Ú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.public void klavesovaSkratka()
klávesováSkratka
.public void ťahanieSúborov()
public void tahanieSuborov()
ťahanieSúborov
.public void pustenieSúboru(String súbor)
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); }
súbor
– úplná cesta a meno súboruGRobot.pustenieSúboru(String)
public void pustenieSuboru(String súbor)
pustenieSúboru
.public Color farbaAktívnehoSlova(String slovo)
null
.
slovo
– identifikátor toho aktívneho slova vnútornej konzoly,
ktorého farba má byť ovplyvnenánull
GRobot.farbaAktívnehoSlova(String)
,
GRobot.Plátno.vypíšAktívneSlovo(String, Object[])
public Color farbaAktivnehoSlova(String slovo)
farbaAktívnehoSlova
.public boolean konfiguráciaZmenená()
true
, tak bude spustená reakcia
zapíšKonfiguráciu
.
(V opačnom prípade by k spusteniu uvedenej reakcie došlo len
v prípade, že 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í
.
true
čítajKonfiguráciu(GRobot.Súbor)
,
zapíšKonfiguráciu(GRobot.Súbor)
,
GRobot.konfiguráciaZmenená()
,
GRobot.Svet.použiKonfiguráciu()
public boolean konfiguraciaZmenena()
konfiguráciaZmenená
.public void čítajKonfiguráciu(GRobot.Súbor súbor) throws IOException
ObsluhaUdalostí
.
súbor
– inštancia triedy Súbor
reprezentujúca
otvorený konfiguračný súbor pripravený na čítanie údajovIOException
konfiguráciaZmenená()
,
zapíšKonfiguráciu(GRobot.Súbor)
,
GRobot.čítajKonfiguráciu(GRobot.Súbor)
,
GRobot.Svet.použiKonfiguráciu()
public void citajKonfiguraciu(GRobot.Súbor subor) throws IOException
čítajKonfiguráciu
.IOException
public void zapíšKonfiguráciu(GRobot.Súbor súbor) throws IOException
ObsluhaUdalostí
.
súbor
– inštancia triedy Súbor
reprezentujúca
otvorený konfiguračný súbor pripravený na zápis údajovIOException
konfiguráciaZmenená()
,
čítajKonfiguráciu(GRobot.Súbor)
,
GRobot.zapíšKonfiguráciu(GRobot.Súbor)
,
GRobot.Svet.použiKonfiguráciu()
public void zapisKonfiguraciu(GRobot.Súbor subor) throws IOException
zapíšKonfiguráciu
.IOException
public boolean ladenie(int riadok, String príkaz, int správa)
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Ť_MENOVKU | – | Má režim ladenia vypísať (pred začatím vykonávania skriptu) definíciu menovky, ktorú našiel pri predbežnej analýze 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. |
ČÍ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:
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
.registrujRobota
();Svet
.načítajKonfiguráciuSveta
(); }public
static
void
main(String
[] args) {Svet
.použiKonfiguráciu
();Svet
.nekresli
();new
RežimLadeniaInteraktívne();Svet
.kresli
();Svet
.aktivujVstupnýRiadok
(); } }
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ázokGRobot.Svet.interaktívnyRežim(boolean)
,
GRobot.Svet.interaktívnaInštancia(String)
,
GRobot.Svet.režimLadenia(boolean)
,
GRobot.Svet.vykonajPríkaz(String)
,
GRobot.Svet.vykonajSkript(String[])