Java - Grafické komponenty (56.díl)

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

Dialogová okna

Pokud potřebujeme v aplikaci vytvořit nějaké další okno, zpravidla k tomu nepoužíváme třídu JFrame. Jak jsme uváděli výše, aplikace by měla disponovat jedním framem. Ostatní okna jsou vytvářena formou dialogu. Práce s dialogy je podobná jako s framy. Dialogová okna dělíme do dvou základních skupin:
  • modální okna
  • nemodální okna

    Modální okno je takové okno, které při otevření zůstává neustále navrchu, pře kryje všechna ostatní okna aplikace. Dokud není uzavřeno, znemožňuje práci s jinými okny aplikace. Modální okna se často používají pro dialogy. Nemodální okna tuto vlastnost nemají, lze s nimi pracovat bez omezení. Práce s dialogy je podobná práci s formuláři.

    Dialogy jsou vhodné pro nastavování parametrů programu, umožňují uživa teli zareagovat na činnost programu, informují ho o aktuálním stavu programu.

    Dialogy lze navrhovat dle vlastní potřeby, můžeme však využívat některé standardizované dialogy.

    Předdefnované dialogy. V knihovně Swing lze nalézt řadu předdefnovaných dialogů. Třída JOptionPane obsahuje statické metody, prostřednictvím kterých lze dialogy vyvolávat. Podíváme se na nejčastěji používané dialogy.
  • ShowMessageDialog - Tento modální dialog slouží ke sdělování zpráv a důležitých informací ve směru program->uživatel. Je nejjednodušším dialogem, zobrazuje jediné tlačítko s popisem OK. Vzhled dialogu může být různě modifkován, metoda JOptionPane.showMessageDialog() je přetížena. Použijeme -li
    JOptionPane.showMessageDialog(JComponent c, String text);
    je vytvořen jednoduchý dialog zobrazující zadaný text. V titulku je zobrazen text Message, okno nedisponuje žádnou ikonou.

    Okno může mít vlastní titulek, v závislosti na informaci, kterou sděluje; lze v něm zobrazovat několik typů ikon které naznačují charakter okna (informační, výstražné, chybové...). Syntaxe vypadá takto
    JOptionPane.showMessageDialog(JComponent c, String text, String nadpis,
    int JOptionPane);

    Hodnoty konstant jsou uvedeny v nsledující tabulce.
    Konstanta Popis
    PLAIN_MESSAGE Okno neobsahuje žádnou ikonu, pouze prostý text.
    WARNING_MESSAGE Výstražné okno
    ERROR_MESSAGE Chybové okno.
    INFORMATION_MESSAGE Informační okno.

    Okno s prostým textem, výstražné okno, chybové okno, informační okno.
  • showOptionDialog - Tento modální dialog má širší možnosti než pouhé zobrazení zprávy. Jeho vzhled i funkčnost mohou být výrazněji modifkovány. Zobrazíme ho metodouJOptionPane.showMessageDialog(), která je opět přetížena. Popíšeme ho pouze stručně, řadu dalších informací lze nalézt v dokumentaci.
    int s showOptionDialog(Component parent, Object text, String title,
    int optionType, int messageType,Icon icon, Object[] options,
    Object initialValue);

    Metoda obsahuje řadu parametrů, jejich stručný popis je uveden v následující tabulce.
    Parametr Popis
    Component parent Jméno nadřazené komponenty.
    Object text Text zobrazený v dialogovém okně.
    String title Nadpis dialogového okna.
    int optionType Typ tlačítek, které budou v dialogu zobrazeny.
    int messageType Typ ikony, která je v dialogu zobrazena.
    Icon icon Ikona zobrazená ve stavovém řádku okna.
    Object [] options Popisy jednotlivých tlačítek dialogu.
    Object initialValue Výchozí hodnota, která může být nastavena (součástí okna může být i combo box)

    Konstanta Popis
    NO_OPTION Tlačítko No
    OK_CANCEL_OPTION Tlačítka OK a Cancel
    OK_OPTION Tlačítko OK
    YES_NO_CANCEL_OPTION Tlačítka YES, NO, CANCEL
    YES_NO_OPTION Tlačítka YES, NO
    CANCEL_OPTION Tlačítko CANCEL
    YES_OPTION Tlačítko YES


    Práce s ikonami je stejná jako v případě message dialogu, nebudeme ji proto uvádět. Typy tlačítek zobrazených v dialogu jsou dány konstantou, která může nabývat následujících hodnot.

    Ukázka zdrojového kódu:
    Object[] options = {"Ano","Ne","Neruš mě"};
    int s=JOptionPane.showOptionDialog(this,Máte rádi programování?",
    Otázka",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE, null,
    options, options[2]);


    Chceme-li vzhled okna upravit, použijeme jinou variantu přetížené metody showOption Dialog. Tlačítka nemusí mít vlastní popis, lze použít defaultní hodnoty.
    int s=JOptionPane.showConfirmDialog(this, "Máte rádi programování?",
    "Otázka",JOptionPane.YES_NO_OPTION);

    Kombinace českého a anglického jazyka nepůsobí dobře, měli bychom se jí vyhýbat.
    Ukázka třetí varianty přetížené metody se dvěma tlačítky:
    Object[] opt = {"Ano","Ne"};
    int s=JOptionPane.showOptionDialog(this,"Máte rádi programování?",
    "Otázka",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null,
    opt, opt[0]);


    Detekce stisknutého tlačítka. Metoda showOptionDialog() vrací kód stisknutého tlačítka. Můžeme tak detekovat, kterým tlačítkem uživatel dialog zavřel.
    if (s==JOptionPane.YES_OPTION)
    {
    //stiskl uzivatel tlacitko YES?
    }


    Vytvoření vlastního dialogu. Vlastní dialog lze vytvořit jako instanci třídy JDialog. Práce s ním je podobná, jako v případě formulářů, nebudeme ji tedy uvádět. Na dialog můžeme přidávat další komponenty, používat layout managery, atd... Dialogu je možno nastavit modalitu/nemodalitu a to za použití metody setModal(boolean b). Zobrazení dialogu je možné provést metodou setVisible(boolean b). Následující kód vytvoří modální dialog.
    JDialog jd=new JDialog();
    jd.setTitle(Vlastní dialog);
    jd.setModal(true);
    jd.setVisible(true)

    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 šest a jedenáct