Java - Grafické rozhraní (37.díl)

Napsal O webu (») 20. 6. 2008 v kategorii Programování, přečteno: 3746×
obrazky/java_logo.png

Vlastnosti komponent

Pro získání vlastností komponent či jejich nastavování používáme metody zvané gettery a settery. Jejich názvy jsou v tomto případě tvořeny jménem vlastnosti, např. Size, Title, Name, Font, Visible, Location..., a slova set nebo get. Gettery jsou bezparametrické, settery obsahují seznam parametrů, které je potřeba komponentě nastavit. Vzniknou tak metody getSize(), getTitle(), getName(), getFont(), getLocation() ..., či setSize(), setTitle(), setName(), setFont(), setLocation(). Upozorněme, že veškerá nastavení je nutné provést před tím, než bude okno zobrazeno.

Zaměření komponenty. Důležitou vlastností komponenty je její zaměření, tzv. fokus. V každém okamžiku je jedna z komponent nacházejících se na formuláři aktivní, říkáme o ní, že je zaměřená (tj.má fokus). Tento stav se projeví grafickým zvýrazněním komponenty. Zaměřená komponenta může reagovat i na vstup z klávesnice (např. klávesové zkratky).

Nastavení vzhledu komponent

Každému formuláři ale i ostatním ostatním komponentám umístěným na něm můžeme nastavit různý vzhled, tzv. look and feel. Komponenty v Javě jsou tedy skinovatelné. Existuje velké množství různých skinů, které jsou volně dostupné na Internetu. Velikosti, tvary, barvy jednotlivých komponent mohou být různé.

Pro správu vzhledů používáme statickou třídu UIManager, kterou je nutno importovat. Nejčastěji používanou metodou je metoda setLookAndFeel(), které umožňující nastavit vzhled aplikace. Kód je obalen v sekvenci try-catch, jedná se o synchronní výjimku.
try
{
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
}
catch (Exception e) {
// handle exception
}

K dispozici jsou dvě základní varianty:
  • getCrossPlatformLookAndFeelClassName():Aplikace bude mít stejný vzhled nezávisle na operačním systému, na kterém běží; tento vzhled nazýváme MetalLookAndFeel. Jedná se o výchozí variantu, která bude použita, pokud uživatel neprovede žádné nastavení.
  • getSystemLookAndFeelClassName(): Aplikace bude mít vzhled obvyklý v daném operačním systému. Na platformě Windows WindowsLookAndFeel a na platformě Linux/Unix MotifLookAndFeel. Ve většině případů je vhodnější použít tuto variantu.

    Nastavení look and feel metodou setLookAndFeel musí být provedeno před zobrazením formuláře. Existují i metody, s jejichž použitím je možno měnit vzhled aplikace za běhu. Další podrobnosti o možnostech nastavování vzhledu komponent lze nalézt v dokumentaci na http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html.
    Ukázky vzhledu téže aplikace s výše uvedenými looks and feels jsou zobrazeny na následujícím obrázku.

    Nastavování parametrů grafického rozhraní v konstruktoru jiné třídy

    Přístup, při kterém jsou parametry grafického rozhraní nastavovány v metodě main() třídy, ve které byla instance s grafickým rozhraním vytvořena, není vhodný. Často potřebujeme vytvořit několik instancí téže třídy, z nichž každá bude disponovat stejným grafickým rozhraním. Z tohoto důvodu je vhodné provést nastavení jejich vlastností v konstruktoru třídy.
    import javax.swing.UIManager;
    public class Komponenty {
    public Komponenty()
    {
    Okno o=new Okno();
    o.setSize(640, 480);
    o.setTitle("Moje okno");
    o.setLocation(100,100);
    o.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    o.setVisible(true);
    }
    public static void main (String [] args)
    {
    try
    {
    UIManager.setLookAndFeel(UIManager.
    getSystemLookAndFeelClassName());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    new Komponenty();
    }

    Nastavení look and feel je provedeno v metodě main(). Pokud se nepovede, zpravidla pokračujeme běžným způsobem, tj. vytvoříme grafcké rozhraní a smíříme se s tím, že nevypadá tak, jak požadujeme.
    Autor: Filip Koval
  • Štítky: Java
    Facebook Twitter Topčlánky.cz Linkuj.cz

    Komentáře

    Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
    Článek ještě nebyl okomentován.


    Nový komentář

    Téma:
    Jméno:
    Notif. e-mail *:
    Komentář:
      [b] [obr]
    Odpovězte prosím číslicemi: Součet čísel sedm a sedm