GUI v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Layout Manager: Doplněny metody)
(Vkládání komponent do okna přidáno k povídání o komponentách v okně.)
Řádka 31: Řádka 31:
 
* <code>setVisible(boolean maBytViditelne)</code>
 
* <code>setVisible(boolean maBytViditelne)</code>
 
** Zobrazí nebo zneviditelní okno.
 
** Zobrazí nebo zneviditelní okno.
 
=== Vkládání komponent do okna ===
 
 
* Okno se skládá z dílčích součástí (komponent). Jsou to tlačítka, zatrhávací políčka, panely, tabulky,...
 
* Seskládání okna obvykle provádíme v soukromé metodě <code>initComponents()</code>, kterou pro tento účel vytvoříme.
 
 
Vložení komponenty do okna
 
* <code>getContentPane().add(Component komponentaVOkne)</code>
 
** vloží do okna komponentu.
 
** se základními komponentami a třídami, které je realizují, se seznámíte v odstavci [[GUI v Javě#Textová pole, tlačítka | Textová pole, tlačítka]].
 
** Pokud chceme mít komponent v okně více, je třeba je uspořádat pomocí [[GUI v Javě#Layout Manager | „layout manageru“]].
 
  
 
=== Příklad ===
 
=== Příklad ===
Řádka 62: Řádka 51:
 
* panely (<code>JPanel</code>).
 
* panely (<code>JPanel</code>).
  
=== <code>JButton</code> ===
+
=== Třída <code>JButton</code> ===
 
* <code>JButton(String popisTlacitka)</code>
 
* <code>JButton(String popisTlacitka)</code>
 
** text na tlačítku zadáme jako parametr konstruktoru
 
** text na tlačítku zadáme jako parametr konstruktoru
Řádka 70: Řádka 59:
 
** vrací popis tlačítka.
 
** vrací popis tlačítka.
  
=== <code>JLabel</code> ===
+
=== Třída <code>JLabel</code> ===
 
* <code>JLabel(String textPopisu)</code>
 
* <code>JLabel(String textPopisu)</code>
 
** text popisky zadáme jako parametr konstruktoru
 
** text popisky zadáme jako parametr konstruktoru
Řádka 76: Řádka 65:
 
* reakci na stisk tlačítka nastavíme [[#Zpracování událostí, posluchač | přiřazením posluchače viz dále]]
 
* reakci na stisk tlačítka nastavíme [[#Zpracování událostí, posluchač | přiřazením posluchače viz dále]]
  
=== <code>JTextField</code> ===
+
=== Třída <code>JTextField</code> ===
 
* <code>JTextField(int pocetZnaku)</code>
 
* <code>JTextField(int pocetZnaku)</code>
 
** volitelným parametrem konstruktoru je délka pole, vyjádřená početem znaků, které do pole vlezou.
 
** volitelným parametrem konstruktoru je délka pole, vyjádřená početem znaků, které do pole vlezou.
Řádka 107: Řádka 96:
 
     }
 
     }
 
</code>  
 
</code>  
 +
 +
=== Vkládání komponent do okna ===
 +
* Abychom komponentu zobrazili, musíme ji umístit do některého okna.
 +
* Seskládání okna obvykle provádíme v soukromé metodě <code>initComponents()</code> okna, kterou pro tento účel vytvoříme.
 +
* Pokud chceme mít komponent v okně více, je třeba je uspořádat pomocí [[GUI v Javě#Layout Manager | „layout manageru“]].
 +
 +
=== Třída <code>JFrame</code> ===
 +
* <code>getContentPane().add(Component komponentaVOkne)</code>
 +
** vloží do okna komponentu.
  
 
=== Příklad ===
 
=== Příklad ===
Řádka 116: Řádka 114:
  
 
== Zpracování událostí, posluchač ==
 
== Zpracování událostí, posluchač ==
* Pro zpracování událostí prvků GUI (tlačítek, textových polí,...) používá Java [[Návrhový vzor Posluchač | návrhový vzor Posluchač (Listener)]].
+
* Pro zpracování událostí prvků GUI (tlačítek, textových polí,...) používá Java [[Návrhový vzor Pozorovatel | návrhový vzor Pozorovatel (Observer)]].
  
 
=== Postup zpracování události tlačítka ===
 
=== Postup zpracování události tlačítka ===

Verze z 7. 7. 2011, 16:30


Následující poznámky jsou jen velmi stručnou osnovou. Možností při vytváření grafického rozhraní je mnohem více. Pokud chcete více než jen minimalistický návod, doporučuji: tutoriál ze stránek Oracle.com



Obsah

Vytvoření okna

Třída JFrame:

Vlastnosti okna

Velikost okna

Zobrazení okna

Příklad



Textová pole, tlačítka

Do okna vkládáme součásti (komponenty). Komponenty jsou potomky třídy JComponent.

Nejběžnější komponenty jsou:

Je-li komponent v okně mnoho, můžeme je uspořádat na

Třída JButton

Třída JLabel

Třída JTextField

Pokud potřebujete z textového pole načíst číslo, můžete použít následující metodu:

   /**
    * Získá číslo z textového pole
    *
    * @param textovePole Textové pole, jehož hodnota se má převést na číslo
    * @return Vrátí hodnotu čísla, zapsaného v textovém poli.
    *     Pokud text v poli nelze převést na číslo (pole je prázdné apod.),
    *      vrátí 0
    *      a navíc do textového pole zapíše výzvu k vložení čísla.     */
   private int ziskejCislo(JTextField textovePole) {
       int vysledek;
       try {
           vysledek = Integer.parseInt(textovePole.getText());
       } catch (NumberFormatException e) {
           textovePole.setText("Nastavte platné číslo!");
           vysledek = 0;
       }
       return vysledek;
   }

Vkládání komponent do okna

Třída JFrame

Příklad



Zpracování událostí, posluchač

Postup zpracování události tlačítka

  1. uživatel klikne na tlačítko
  2. objekt reprezentující tlačítko vygeneruje událost (event)
    prakticky vytvoří novou instanci třídy ActionEvent), která nese podrobnější informace (které tlačítko myši bylo stisknuto, na jakých souřadnicích,...
  3. objekt reprezentující tlačítko událost pošle všem svým „posluchačům“ (posluchači jsou objekty, které splňují rozhraní (interface) ActionListener)
    prakticky se „poslání události“ realizuje tak, že tlačítko zavolá metodu actionPerformed(ActionEvent e), kterou předepisuje rozhraní ActionListener. Jako parametr metody se předá objekt události
  4. posluchač provede akci, která se má provést
    programátor tedy akci popíše v kódu metody actionPerformed(ActionEvent e) v posluchači

Aby bylo možné na stisk tlačítka reagovat, musíme:

  1. mít třídu posluchače (interface ActionListener)
  2. vytvořit instanci třídy posluchače
  3. zaregistrovat instanci třídy posluchače u tlačítka.

class ActionEvent

interface ActionListener

Příklad


Layout Manager

Nejběžnější třídy layout managerů v Javě

Třídy JFrame a JPanel

Příklad

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje