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!“