Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Programování jednoduchých Java GUI her - IDE, Okno, Panel

Tutoriál pro ty, kteří mají základy programovacího jazyka Java, a kteří se chtějí naučit, jak psát jednoduché grafické hry v tomto jazyce.

V prvním díle tohoto tutoriálu se seznámíme s komponentami JFrame a JPanel z balíčku javax.swing. Nejdříve si ale povíme něco o vývojovém prostředí.

IDE

Vývojové prostředí (Integrated Development Environment) je program, který usnadňuje programátorovi vývoj aplikací. Vzhledem, že tento tutoriál požaduje určité znalosti programovacího jazyka Java, předpokládám, že většina z vás, se již s tímto termínem setkala, a že nějaké vývojové prostředí umí používat. Pokud jste však doposud všechny zdrojové kódy psali v textovém editoru, je teď ideální čas, se s nějakým IDE seznámit.

Nikoho samozřejmě nenutím. Můžete klidně zůstat u svého oblíbeného textového editoru a tuto kapitolu přeskočit. Jen chci podotknout, že u větších aplikací IDE obrovsky ulehčí a urychlí práci.

Pro Javu existuje řada vývojových prostředí. Ze své zkušenosti vám pro začátek mohu doporučit IDE NetBeans. Pracovat s ním se dá rychle naučit, je intuitivní a přehledný. Záleží ale čistě na vás.

Magické slůvko this

Během celého tutoriálu se budete setkávat s výrazy jako:

this.nazevMetody();
this.nazevPromenne();

Je to totéž, jako bych napsal:

nazevMetody();
nazevPromenne();

Proč to tedy dělám a přidávám si práci? Právě kvůli IDE. Pokud budete používat IDE a budete volat metodu nějakého objektu např.

mujObjekt.metodaObjektu()

Po napsání tečky vám IDE napoví, jaké metody a proměnné můžete použít. Slovo this se dá přeložit jako tentoObjekt. Pokud tedy napíši

this.

IDE mi napoví metody a proměnné použitelné pro tento objekt. Podívejte se na následující třídu a obrázek.

public class Ide {
    /**
     * Proměnná, ve které je uloženo heslo.
     */
    int heslo = 1234;

    /**
     * Proměnná, ve které je uložen uvítací pozdrav.
     */
    String pozdrav = "Ahoj";

    String nejakyText;

    public void vytiskniPozdrav() {
        System.out.println(this.pozdrav);
    }
}
NetBeans IDE - Tvorba her v Java Swing

IDE navíc zobrazilo i dokumentační komentář. To se hodí zvláště v případě, kdy jste danou metodu nepsali vy, ale někdo jiný. Pokud má dokumentační komentář, IDE vám ho zobrazí.

Zkratky

Každé IDE nabízí různé zkratky pro nejpoužívanější činnosti a příkazy. Pokud používáte NetBeans, tak vás upozorním na dvě nejpoužívanější, aby jste nemuseli tolik psát.

Pokud napíšete sout a stisknete tabulátor, Netbeas za vás napíší

System.out.println("");

A pokud napíšete psvm a stisknete tabulátor

public static void main(String[] args) {

}

Okno

Pro programování grafických programů budeme používat javovské knihovny AWT a hlavně Swing. Základem grafického programu je hlavní okno.

import javax.swing.JFrame;

public class OknoProgramu extends JFrame {

    public OknoProgramu() {
        this.setTitle("Hlavní Okno Programu");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 300);
    }

    public static void main(String[] args) {
        OknoProgramu okno = new OknoProgramu();
        okno.setVisible(true);
    }
}

Abychom mohli nějakou komponentu z knihovny použít, musíme ji nejdříve naimportovat:

import javax.swing.JFrame;

Knihovna Swing nám dává k dispozici velké množství připravených tříd pro vytváření grafických objektů. Pokud tedy chceme vytvořit grafickou komponentu, stačí nám pouze vytvořit instanci daného objektu pomocí new. Pokud nám ale nebude zcela vyhovovat daný grafický objekt (což většinou nebude) a budeme ho chtít pozměnit, musíme vytvořit vlastní třídu, která bude dědit z knihovní třídy a ve své třídě provést potřebné změny.

public class OknoProgramu extends JFrame
{
}

Dědíme z třídy JFrame, což je třída představující hlavní okno. JFrame je kontejner, do kterého budeme vkládat další komponenty.

V konstruktoru nastavíme titulek okna

this.setTitle("Hlavní Okno Programu");

, co se má provést při stisknutí křížku (zavření okna)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

a výchozí velikost okna.

this.setSize(400, 300);

Hlavním vstupním bodem programu je metoda main(), ve které vytvoříme instanci naší třídy. Aby bylo okno viditelné musíme ho nastavit na visible.

public static void main(String[] args) {
        OknoProgramu okno = new OknoProgramu();
        okno.setVisible(true);
    }

Nyní můžeme program spustit.

Okno v Java Swing - Tvorba her v Java Swing

Panel

JFrame, potažmo naše odvozená třída, představuje pouze rám, obal, do kterého zabalíme další komponenty uživatelského prostředí. Zatímco JFrame nám umožňuje takové činnosti jako je zavření okna, nastavení titulku apod., tak JPanel nám poskytuje plochu, na kterou můžeme kreslit, umisťovat další komponenty, nastavovat barvu apod.. Zatímco JFrame je rám, tak JPanel budeme používat jako kreslící plátno.

import java.awt.Color;
import javax.swing.JPanel;

public class MujPanel extends JPanel {

    public MujPanel() {
        this.setBackground(Color.red);
    }
}

Importujeme třídu Color a třídu JPanel, kterou zdědíme a upravíme k obrazu svému.

public MujPanel() {
    this.setBackground(Color.red);
}

V kostruktoru jsme nastavili barvu pozadí na novou barvu.

Nyní vytvoříme hlavní okno a náš panel do něj umístíme.

import javax.swing.JFrame;

public class MujProgram extends JFrame {

    MujProgram() {
        this.setTitle("Můj Program");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        MujPanel panel = new MujPanel();
        this.add(panel);

        this.setSize(400, 300);
    }

    public static void main(String[] args) {
        MujProgram program = new MujProgram();
        program.setVisible(true);
    }
}

A takhle to vypadá.

Okno s panelem v Java Swing - Tvorba her v Java Swing

Přidali jsme pouze dva řádky kódu.

MujPanel panel = new MujPanel();

Vytvoří instanci (objekt) našeho panelu a

this.add(panel);

vloží náš panel do hlavního okna programu.

Velikost hlavního okna nemusíme definovat přímo, jak jsme to doposud dělali, ale můžeme nastavit velikost panelu (což je logičtější, protože na něm budeme pracovat) a hlavní okno nechat přizpůsobit velikosti pracovní plochy - panelu.

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;

public class MujPanel extends JPanel {

    public MujPanel() {
        this.setBackground(Color.green);
        this.setPreferredSize(new Dimension(400, 300));
    }
}

V konstruktoru nastavíme barvu pozadí na zelenou a požadovanou velikost panelu na šířku 400px a výšku 300px. Objekt typu Dimension má dvě vlastnosti a to width a height a několik metod pro získání a nastavení těchto vlastností.

Teď ještě vytvoříme třídu pro hlavní okno.

import javax.swing.JFrame;

public class MujProgram extends JFrame {

    MujProgram() {
        this.setTitle("Můj Program");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        MujPanel panel = new MujPanel();
        this.add(panel);

        this.pack();
    }

    public static void main(String[] args) {
        MujProgram program = new MujProgram();
        program.setVisible(true);
    }
}

Všimněte si, že velikost okna již nezadáváme přímo, ale voláme metodu pack(), která okno zabalí okolo panelu. Také si všimněte, že okno je větší, než v předchozím případě. Je to proto, že jsme zadali velikost panelu a okno má ještě další náležitosti jako jsou okraje a titulek.

Okno s panelem v Java Swing - Tvorba her v Java Swing

V příští lekci, Programování jednoduchých Java GUI her - Kreslení, si ukážeme, jak na JPanel kreslit různé tvary a text a budeme pokračovat v tvorbě grafické hry v Java Swing.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 712x (2.41 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Všechny články v sekci
Tvorba her v Java Swing
Přeskočit článek
(nedoporučujeme)
Programování jednoduchých Java GUI her - Kreslení
Článek pro vás napsal vita
Avatar
Uživatelské hodnocení:
30 hlasů
vita
Aktivity