1. díl - Java GUI

Java Swing Swing bez grafického návrháře Java GUI

Tento tutoriál je psaný pro toho, kdo se chce naučit základy grafického uživatelského rozhraní v Javě a tak vytvářet zajímavé programy. Předpokladem je znalost alespoň základních konstrukcí jazyka a základy OOP. Ještě úplně nevím, jak bude tutoriál vypadat, ale pravděpodobně budeme postupně tvořit nějaký složitější program. Zběhlejším kolegům bych se chtěl omluvit za případné chyby a chtěl bych je pořádat o upozornění na ně a následné opravení. :-)

Co to je GUI?

Grafické uživatelské rozhraní (Graphical User Interface) je v podstatě vše, s čím se běžný uživatel našeho programu setkává – tedy okno obsahující různé grafické prvky prvků (tlačítka, ikony, posuvníky ..). Pomocí těchto prvků uživatel komunikuje s programem. Již od 80. let se GUI stávalo samozřejmostí a dnes se prakticky nesetkáte s programem, který běží pouze v příkazovém řádku. Proto je dobré se ho naučit. :-)

GUI a Java

V začátcích Javy nestál návrh GUI za moc, ale postupem času byl stále zlepšován. Dnes je Java plnohodnotný nástroj na tvorbu pěkných okenních programů. Java obsahuje dvě nejpoužívanější grafické knihovny. Starší AWT (Abstract Windowing Toolkit) a od verze JDK 1.2 také JFC (Java Foundation Classes) – známou jako Swing. V Javě se všechna tlačítka, okna, textové plochy atd. nazývají komponenty. Komponenty jsou umístěny v kontejnerech např. JFrame nebo JPanel.

První okno

V Javě je samozřejmě více možností jak vytvořit základní okno. Podle mě je nelepší varianta tato: V Netbeans nebo Eclipsu si vytvoříme nový projekt. Vytvoří se nám třída pojmenovaná po našem projektu s metodou main.

K našemu projektu vytvoříme novou třídu s názvem například Gui. Třída Gui bude dědit ze třídy JFrame. Knihovnu samozřejmě musíme naimportovat. JFrame se nachází v balíčku javax.Swing.JFra­me. Pro jistotu naimportujeme hvězdičkou všem.

Ve třídě Gui vytvoříme konstruktor bez parametru. Protože java konstruktory nedědí, použijeme klíčové slovo super, které volá konstruktor třídy JFrame a jako parametr přebírá titulek na našem okně. Třída Gui vypadá asi takto:

import javax.swing.*;

public class Gui extends JFrame {

    public Gui()
    {
        super("Moje první okno"); //parametr je titulek okna
    }

}

Vrátíme se do hlavní metody. Vytvoříme v ní libovolný objekt ze třídy Gui. Například okno. Na našem objektu zavoláme tyto základní metody:

  • setVisible(true) - Tato metoda s parametrem true nám zviditelní naše okno
  • setDefaultClo­seOperation(JFra­me.EXIT_ON_CLO­SE) – Po kliknutí na křížku se program ukončí
  • okno.setSize(300, 200) – Metoda, která nastaví velikost okna (v pixelech), první parametr je šířka, druhý výška.

Hlavní třída bude vypadat takto:

import javax.swing.JFrame;

public class TutorialGUI {

    public static void main(String[] args) {
        Gui okno = new Gui();
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okno.setVisible(true);
        okno.setSize(300, 200);
    }
}

Pokud program teď spustíme, okno se nám zobrazí v levém rohu. Příjemnější je, pokud se zobrazí v centru monitoru. Na to použijeme tuto metodu s parametrem null.

  • setLocationRe­lativeTo(null)

Hlavní metoda vypadá tedy takto:

public static void main(String[] args) {
    Gui okno = new Gui();
    okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    okno.setVisible(true);
    okno.setSize(300, 200);
    okno.setLocationRelativeTo(null);
}

Paráda, máme tedy naše první okno! :-) Mělo by vypadat nějak takto.

Moje první okno v Java Swing

Okno můžeme normálně zvětšovat zmenšovat minimalizovat a zavřít. Příště se podíváme na přidávání nějakých komponent.


 

Stáhnout

Staženo 731x (14 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Článek pro vás napsal Samik11
Avatar
Autor se věnuje primárně programování v jazyce Java. Nestraní se ani C# nebo PHP.

Jak se ti líbí článek?
Celkem (16 hlasů) :
4.56254.56254.56254.56254.5625


 


Miniatura
Všechny články v sekci
Java Swing bez grafického návrháře
Miniatura
Následující článek
Java GUI - Základní komponenty

 

 

Komentáře
Zobrazit starší komentáře (15)

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Podle textu chyby se obvykle pozná co je špatně, nemáme křišťálovou kouli a nevíme co jsi kde zapomněl.

Odpovědět  +1 25.6.2013 13:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na David Čápka
Ondrca:

Nevim co to je za error - Error: Could not find or load main class javaapplicati­on4.JavaAppli­cation4
Java Result: 1

Odpovědět 25.6.2013 14:08
Zase jsem o něco chytřejší
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na David Čápka
Ondrca:

Když si to stáhnu a otevřu v NetBeans tak to funguje.
Ale když si zkopíruju (opíšu) celý kód tak mi to nefunguje :(.
Možná ti to pomůže.
Díky

Odpovědět 25.6.2013 14:35
Zase jsem o něco chytřejší
Avatar
Kit
Redaktor
Avatar
Odpovídá na Ondrca
Kit:

To je jen takové hádání. Kvalita odpovědí záleží na kvalitě dotazu. Prostě to máš rozbitý.

Máš tu metodu main "public", "static" a "void"?

Odpovědět 25.6.2013 15:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
xxxvodnikxxx
Člen
Avatar
xxxvodnikxxx:

Pánové vysvětlíte mi někdo pořádně rozdíl mezi AWT a Swingem ?
Jedinný, čeho jsem si všimnul je u AWT starší design - logicky, a jinak že je třeba komponenty, nebo listenery jmenujou jinak, ale jinak jestli je v tom něco významnějšího nevim..

Odpovědět 2.7.2013 20:58
Unix- svět, kde chcete být nulou :) (UID)
Avatar
Kit
Redaktor
Avatar
Odpovídá na xxxvodnikxxx
Kit:

Správně. Swing je novější a proto bys mu měl dát přednost a na AWT postupně zapomenout.

Odpovědět  +1 2.7.2013 21:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Na Swing už by se mělo taky pomalu zapomenout.

Odpovědět  +1 2.7.2013 21:30
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Homo
Člen
Avatar
Odpovídá na Kit
Homo:

Postupne by se melo zapomenout jak na AWT tak i na Swing. JavaFX je nahradi co nevidet a znalosti ani jednoto z tech starsich frameworku tam nevyuzijes.

Odpovědět  +2 2.7.2013 21:32
1010011 1000101 1011000
Avatar
Hartrik
Redaktor
Avatar
 
Odpovědět  +1 2.7.2013 23:34
Avatar
xxxvodnikxxx
Člen
Avatar
Odpovědět 3.7.2013 9:43
Unix- svět, kde chcete být nulou :) (UID)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 25. Zobrazit vše