Programování v jazyce Java

Události Uvedené příklady ukazovaly, jak vytvořit uživatelské rozhraní. To však samo o sobě nestačí. Ještě je t...


Události
Uvedené příklady ukazovaly, jak vytvořit uživatelské rozhraní. To však samo o
sobě nestačí. Ještě je třeba napsat kód, který bude něco provádět, např. při
stisknutí tlačítka. Musíme naprogramovat reakci na události, které mohou v
programu nastat.
Chceme-li např. zareagovat na stisk tlačítka, můžeme přepsat metodu action u
appletu:
import java.awt.*;
import java.applet.*;
public class Test2 extends Applet{ Button okButton = new Button("OK"); public
void init() { add(okButton); } public boolean action(Event e, Object what){ if
(e.target == okButton) { Systém.out.println("Stisknut button"); } return true; }
}
Podobným způsobem je možné reagovat na události, které vzniknou kliknutím myši,
stisknutím klávesy na klávesnici apod. Jména metod, které zpracovávají
události, se bohužel změnila od verze 1.0 k verzi 1.1, takže je vždy potřeba
dávat pozor na to, kterou verzi překladače a prostředí máme k dispozici. Verze
1.1 podporuje i volání metod z verze 1.0, tj. zpětná kompatibilita byla
zachována, musíme však dávat pozor, abychom nepoužili volání z verze 1.1, máme-
li k dispozici pouze verzi 1.0 (např. v prohlížeči).
Layout Manager
V předchozích příkladech jsme si ukazovali, jak přidávat komponenty do
kontejnerů pomocí metody add. Při prohlížení běžících programů vás jistě
napadlo, že jsme nikdy nezadávali žádné souřadnice, kam se dané komponenty mají
zobrazit. To většinou není třeba, neboť v knihovně AWT máme k dispozici
objekty, které se o umisťování komponent starají za nás. Těmto objektům se říká
Layout Managery, protože implementují rozhraní Layout Manager.
Použití Layout Managerů by se mohlo zdát na první pohled zbytečné a těžkopádné
proč bychom nemohli umisťovat komponenty na přesně určené souřadnice? Problém s
umisťováním na absolutní souřadnice je v tom, že nikdy nevíme, jak bude vypadat
fyzické zařízení, na kterém se budou naše komponenty zobrazovat nemůžeme vědět,
jaké bude mít uživatel k dispozici rozlišení obrazovky, jak velké budou fonty
atd. Layout Manager by nás jako programátory měl od těchto detailů odstínit.
S každým kontejnerem (potomkem třídy Container) je svázán jeden Layout Manager.
Pokud jej nezměníme, je použit defaultní pro třídu Panel (a tedy i pro jejího
potomka Applet) je použit FlowLayout.
FlowLayout
Objekt této třídy pracuje tak, že umisťuje jednotlivé komponenty za sebou podle
pořadí vkládání příkazem add. Pokud se další komponenta nevejde na řádek,
pokusí se ji umístit na další řádek. Toto chování je vhodné, pokud do
kontejneru umisťujeme malé množství objektů (např. dva Buttony apod.). Pokud
chceme tento LayoutManager použít i v objektech, pro které není defaultní,
můžeme použít příkaz:
setLayout(new FlowLayout());
Tento příkaz je třeba vyvolat na příslušný kontejner, např. na Frame.
GridLayout
Pokud chceme umisťovat objekty do mřížky, můžeme příkazem
setLayout(new GridLayout(x,y));
aktivovat nový GridLayout. Parametry x a y určují rozměry mřížky. Podívejme se
na applet, do kterého vložíme čtyři tlačítka:
import java.awt.*;
import java.applet.*;
public class Test2 extends Applet{ public void init() { setLayout(new
GridLayout(2,2)); add(new Button("Prvni")); add(new Button("Druhy")); add(new
Button("Treti")); add(new Button("Ctvrty")); }
}
Po spuštění si můžeme vyzkoušet, co se bude dít, budeme-li měnit velikost
našeho appletu.
8 0012 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.