public static class GRobot.ObsluhaUdalostí extends Object
newObsluhaUdalostí() {@Overridepublicvoidtik() {}@Overridepublicvoidklik() {}@OverridepublicvoidvoľbaPoložkyPonuky() {}@OverridepublicvoidvoľbaKontextovejPoložky() {}@OverridepublicvoidvoľbaTlačidla() {}@Overridepublicvoidvymazanie() {}@Overridepublicvoidprekreslenie() {}@OverridepublicvoidpresunutieOkna() {}@OverridepublicvoidzmenaVeľkostiOkna() {}@OverridepublicvoidaktiváciaOkna() {}@OverridepublicvoiddeaktiváciaOkna() {}@Overridepublicvoidukončenie() {}@OverridepublicvoidpotvrdenieÚdajov() {}@OverridepublicvoidzrušenieÚdajov() {}@OverridepublicvoidstlačenieTlačidlaMyši() {}@OverridepublicvoiduvoľnenieTlačidlaMyši() {}@OverridepublicvoidpohybMyši() {}@OverridepublicvoidťahanieMyšou() {}@OverridepublicvoidrolovanieKolieskomMyši() {}@OverridepublicvoidstlačenieKlávesu() {}@OverridepublicvoiduvoľnenieKlávesu() {}@OverridepublicvoidzadanieZnaku() {}@OverridepublicvoidklávesováSkratka() {}@OverridepublicvoidťahanieSúborov() {}@OverridepublicvoidpustenieSúboru(String súbor) {}@Overridepublicjava.awt.ColorfarbaAktívnehoSlova(Stringslovo) {returnnull; }// 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);newObsluhaUdalostí() {@Overridepublicvoidklik() {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í:publicclassTestKonfigurá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í:privatebooleanvlastnosť =false;// „skutočná“ vlastnosťprivatebooleannačítanáVlastnosť =false;// „tieň“ – detektor zmien// Prípadne ďalšie dvojice…// ...privateTestKonfigurácie() {// Toto tlačidlo bude meniť stav vlastnosti:finalTlačidlotlačidlo =newTlačidlo("Zapnúť");newObsluhaUdalostí() {@OverridepublicvoidvoľbaTlačidla() {if(tlačidlo.aktivované()) {// Ak bolo zvolené, zmení sa hodnota vlastnosti aj text// tlačidlavlastnosť = !vlastnosť; tlačidlo.text(vlastnosť ?"Vypnúť":"Zapnúť"); } }// Na to, aby vlastná konfigurácia fungovala je nevyhnutné// naprogramovanie nasledujúcich troch reakcií:@OverridepublicbooleankonfiguráciaZmenená() {if(vlastnosť != načítanáVlastnosť)returntrue;// ...returnfalse; }@OverridepublicvoidzapíšKonfiguráciu(Súborsúbor)throwsjava.io.IOException{// Zapisujeme hodnoty skutočných vlastností:súbor.zapíšVlastnosť("vlastnosť", vlastnosť);// ...}@OverridepublicvoidčítajKonfiguráciu(Súborsúbor)throwsjava.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úť");// ...}publicstaticvoidmain(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");newTestKonfigurá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()
Alias pre 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()
Alias pre 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()
Alias pre 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()
Alias pre 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()
Alias pre zmenaVeľkostiOkna.public void aktiváciaOkna()
ÚdajeUdalostí.aktivitaOkna().
GRobot.aktiváciaOkna()public void aktivaciaOkna()
Alias pre aktiváciaOkna.public void deaktiváciaOkna()
ÚdajeUdalostí.aktivitaOkna().
GRobot.deaktiváciaOkna()public void deaktivaciaOkna()
Alias pre 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()
Alias pre 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()
Alias pre potvrdenieÚdajov.public void potvrdenieVstupu()
Alias pre potvrdenieÚdajov.public void spracovaniePríkazu()
GRobot.spracovaniePríkazu()public void spracovaniePrikazu()
Alias pre 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()
Alias pre zrušenieÚdajov.public void zrušenieVstupu()
Alias pre zrušenieÚdajov.public void zrusenieVstupu()
Alias pre 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()
Alias pre 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()
Alias pre 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()
Alias pre 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()
Alias pre ť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()
Alias pre 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()
Alias pre 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()
Alias pre 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()
Alias pre klávesováSkratka.public void ťahanieSúborov()
public void tahanieSuborov()
Alias pre ť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.
@OverridepublicvoidpustenieSúboru(Stringsúbor) {Svet.vypíšRiadok(súbor); }
súbor – úplná cesta a meno súboruGRobot.pustenieSúboru(String)public void pustenieSuboru(String súbor)
Alias pre 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ánullGRobot.farbaAktívnehoSlova(String),
GRobot.Plátno.vypíšAktívneSlovo(String, Object[])public Color farbaAktivnehoSlova(String slovo)
Alias pre 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()
Alias pre 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 údajovIOExceptionkonfigurá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
Alias pre čítajKonfiguráciu.IOExceptionpublic 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 údajovIOExceptionkonfigurá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
Alias pre zapíšKonfiguráciu.IOExceptionpublic 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:
publicclassRežimLadeniaInteraktívneextendsGRobot{privateRežimLadeniaInteraktívne() {interaktívnyRežim(true);Svet.režimLadenia(true);Svet.vypíš(this);newObsluhaUdalostí() {@OverridepublicvoidpotvrdenieÚdajov() {Farbazáloha =Svet.farbaTextu();Svet.farbaTextu(červená);Svet.vypíšRiadok("Chyba");Svet.farbaTextu(záloha); }@Overridepublicbooleanladenie(intriadok, String príkaz,intspráva) {switch(správa) {caseVYPÍSAŤ_PRÍKAZ:caseVYKONAŤ_PRÍKAZ:returntrue; }if(správa <0)returntrue;Farbazáloha =Svet.farbaTextu();Svet.farbaTextu(purpurová);Svet.vypíšRiadok(" × ", príkaz);Svet.farbaTextu(záloha);returnfalse; } };Svet.registrujRobota();Svet.načítajKonfiguráciuSveta(); }publicstaticvoidmain(String[] args) {Svet.použiKonfiguráciu();Svet.nekresli();newRež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[])