Layout managery
Při rozmis´ování komponent na formuláře (či jiné komponenty) nedefinujeme v Javě polohu komponent zpravidla absolutně. Důvodem je fakt, že Java může běžet na různých prostředích, kde jednotlivé grafické komponenty nemusejí mít stejnou velikost či tvar. Takový program by na některých platformách nevypadal vždy pěkně, mohlo dojít např. k překrytům některých jeho grafických komponent, jiné by se na formulář nemusely vejít celé. Místo toho používáme tzv. layout managery (správce uspořádání), které jsou zodpovědné za rozmístění komponent. Při přechodu mezi různými prostředími provádějí přepočet polohy atvaru komponent. Existuje pět typů správců uspořádání, každá z komponent má svůj vlastní implicitní správce uspořádání; ten však můžeme změnit za použití metody setLayout(LayoutManager lm).
LayoutManager představuje objekt třídy java.awt.LayoutManager, tvoří ji několik dalších tříd. Komplexnější popis této problematiky přesahuje rozsah tohoto materiálu, podíváme se na tři nejčastěji používané layout managery:
První dva layout managery jsou poměrně jednoduché, třetí umožňuje provádět pokročilejší rozvržení komponent.
Okno a kontejner Připomeňme, že každé okno obsahuje kontejner, jehož obsah můžeme získat metodou getContentPane(). Do kontejneru můžeme při- dávat komponenty metodou add(Component c).
Návrh vzhledu aplikace. S použitím layout managerů můžeme navrhovat i značně vzhledově složitá grafcká rozhraní tvořená velkým množstvím komponent. Tento postup je však poměrně náročný, vytvoření takového rozhraní zabere spoustu času. Je proto vhodné ho provádět některým z nástrojů pro RAD obsahujícího tzv. GUI buildery. Do této skupiny patří např. JBuilder nebo NetBeans.
V praxi se provádí při ručním návrhu rozdělení okna na několik různých částí, které obsahují malé množství komponent. Vzhled každé takto vzniklé části je navrhován samostatně. Často nevystačíme s jedním layout managerem, můžeme je proto vzájemně kombinovat. My budeme činnost layout managerů ilustrovat pouze na jednoduchých příkladech.
FlowLayout
FlowLayout představuje nejjednodušší layout manager. V předcházejících kapitolách jsme se s ním již seznámili. Připomeňme si, že jednotlivé komponenty uspořádává do řádky za současného vycentrování; mezi komponentami jsou ponechány mezery. Pokud se již komponenty na řádek nevejdou, pokračuje se nadalším řádku. Výška řádku je dána nejvyšší komponentou. Komponenty mohou být zarovnány také nalevo nebo napravo. K dispozici je několik konstruktorů
FlowLayout();
FlowLayout(typ_zarovnani);
FlowLayout(typ_zarovnani, vod_mezera, svisla_mezera);
Typ zarovnání lze zvolit prostřednictvím konstant:
FlowLayout.CENTER, FlowLayout.RIGHT,
FlowLayout.LEFT.
Podívejme se na následující příklad.
public class Okno extends JFrame{
public Okno() {
this.setSize(320,240);
this.setTitle("Okno");
this.setLayout(new FlowLayout(FlowLayout.RIGHT,5,5));
JButton but1=new JButton("Ahoj");
this.getContentPane().add(but1);
JButton but2=new JButton("Druhe");
this.getContentPane().add(but2);
JButton but3=new JButton("Treti");
this.getContentPane().add(but3);
JButton but4=new JButton("Ctvrte");
this.getContentPane().add(but4);
JButton but5=new JButton("Pate");
this.getContentPane().add(but5);
JButton but6=new JButton("Seste");
this.getContentPane().add(but6);
this.setVisible(true);
}
Autor: Filip Koval