GUI v Javě
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (→Textová pole, tlačítka:  Doplnění metod textového pole) | |||
| Řádka 47: | Řádka 47: | ||
| Nejběžnější komponenty jsou: | Nejběžnější komponenty jsou: | ||
| * tlačítka (<code>JButton</code>), | * tlačítka (<code>JButton</code>), | ||
| − | |||
| * textová pole (<code>JTextField</code>), | * textová pole (<code>JTextField</code>), | ||
| − | |||
| * popisky (<code>JLabel</code>). | * popisky (<code>JLabel</code>). | ||
| Řádka 55: | Řádka 53: | ||
| * panely (<code>JPanel</code>). | * panely (<code>JPanel</code>). | ||
| − | Příklad | + | === <code>JButton</code> === | 
| + | * <code>JButton(String popisTlacitka)</code> | ||
| + | ** text na tlačítku zadáme jako parametr konstruktoru | ||
| + | **: <code>JButton tlStart = new JButton("Start");</code> | ||
| + | * reakci na stisk tlačítka nastavíme [[#Zpracování událostí, posluchač | přiřazením posluchače viz dále]] | ||
| + | |||
| + | === <code>JLabel</code> === | ||
| + | * <code>JLabel(String textPopisu)</code> | ||
| + | ** text popisky zadáme jako parametr konstruktoru | ||
| + | **: <code>JLabel lCisloA = new JLabel("Zadejte číslo A:");</code> | ||
| + | * reakci na stisk tlačítka nastavíme [[#Zpracování událostí, posluchač | přiřazením posluchače viz dále]] | ||
| + | |||
| + | === <code>JTextField</code> === | ||
| + | * <code>JTextField(int pocetZnaku)</code> | ||
| + | ** volitelným parametrem konstruktoru je délka pole, vyjádřená početem znaků, které do pole vlezou. | ||
| + | * <code>String getText()</code> | ||
| + | ** vrací aktuální text v textovém poli | ||
| + | * <code>setText(String text)</code> | ||
| + | ** nastaví do textového pole zadaný text | ||
| + | |||
| + | Pokud potřebujete z textového pole načíst číslo, můžete použít následující metodu: | ||
| + | <code> | ||
| + |     /** | ||
| + |      * 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; | ||
| + |     } | ||
| + | </code>  | ||
| + | |||
| + | === Příklad === | ||
| * Vytvořte okno s jediným tlačítkem. | * Vytvořte okno s jediným tlačítkem. | ||
| * Na tlačítku bude text „Superokno!“ | * Na tlačítku bude text „Superokno!“ | ||
Verze z 19. 6. 2011, 20:43
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: 
- realizuje okno s titulním pruhem a tlačítky.
Vlastnosti okna
-  setTitle(String titulek)- nastavuje titulek okna (text v titulním pruhu).
 
-  setDefaultCloseOperation(int akce)- říká co se bude dít při stlačení zavíracího tlačítka.
-  naše aplikace většinou mají jediné okno, chceme tedy, aby se při zavření okna zavřela celá aplikace.
- k tomu slouží konstanta JFrame.EXIT_ON_CLOSE.
 
 
Velikost okna
-  pack()- zmenší velikost okna tak, aby se do něj vlezly komponenty, které jsou aktuálně v okně.
 
Zobrazení okna
-  setVisible(boolean maBytViditelne)- 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ě initComponents(), kterou pro tento účel vytvoříme.
Vložení komponenty do okna
-  getContentPane().add(Component komponentaVOkne)- vloží do okna komponentu. Pokud chceme mít komponent v okně více, je třeba je uspořádat pomocí „layout manageru“.
 
Příklad
- Vytvořte aplikaci s oknem, které půjde přesunovat, minimalizovat a při jehož zavření se aplikace ukončí.
- V titulním pruhu bude zobrazen text „Hello world!“.
Textová pole, tlačítka
Do okna vkládáme součásti (komponenty). Komponenty jsou potomky třídy JComponent. 
Nejběžnější komponenty jsou:
-  tlačítka (JButton),
-  textová pole (JTextField),
-  popisky (JLabel).
Je-li komponent v okně mnoho, můžeme je uspořádat na
-  panely (JPanel).
  JButton 
-  JButton(String popisTlacitka)-  text na tlačítku zadáme jako parametr konstruktoru
-  JButton tlStart = new JButton("Start");
 
-  
 
-  text na tlačítku zadáme jako parametr konstruktoru
- reakci na stisk tlačítka nastavíme přiřazením posluchače viz dále
  JLabel 
-  JLabel(String textPopisu)-  text popisky zadáme jako parametr konstruktoru
-  JLabel lCisloA = new JLabel("Zadejte číslo A:");
 
-  
 
-  text popisky zadáme jako parametr konstruktoru
- reakci na stisk tlačítka nastavíme přiřazením posluchače viz dále
  JTextField 
-  JTextField(int pocetZnaku)- volitelným parametrem konstruktoru je délka pole, vyjádřená početem znaků, které do pole vlezou.
 
-  String getText()- vrací aktuální text v textovém poli
 
-  setText(String text)- nastaví do textového pole zadaný text
 
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;
   }
Příklad
- Vytvořte okno s jediným tlačítkem.
- Na tlačítku bude text „Superokno!“
