07-Nyissunk ki egy ablakot!

Amiket eddig csináltunk, azok szaknyelven "nyomi-programok".

(Ezt a szaknyelvet egy korábbi DM-estől tanultam - remekül kifejezi, hogy ugyan azt állítjuk hogy programot csináltunk, de azért amiket eddig csináltunk azok egészen másként néznek ki, mint amiket nap mint nap használunk.)

Konzolosan

A különbség abban rejlik, hogy a nyomi programok a gombozatról várnak adatokat, és a konzolra írják az adatokat.

A konzol az egy olyan monitort és gombozatot jelent, mint ez:

Ez egy konzol: szövegesen lehet rajta beszélni a számítógéppel

Szerintem már nem így használjuk a számítógépeket manapság, ugye? Ennek ellenére a konzol fogalma megmaradt, és a mai modern gépeken is van konzol - általában egy rusnya ablakban.

Az Eclipse segít, hogy ne rusnya ablakban lássuk a programunkat, mert van neki külön Console nézete:

A program eredménye megy a Console view-re

De ha a programunkat Eclipse nélkül indítjuk el, akkor már tényleg az igazi konzol látszik (azaz a színes Windózon egy csúnya fekete ablak, amiben kizárólag szöveget lehet gépelni és kiírni - szóval ez egy konzol):

A program eredménye megy a konzolra

Bárhogy is szépítjük, meg kell állapítani: manapság nem így néznek ki a programok, ugye?

Ablakosan

Manapság minden programnak ablaka van, amibe szép grafikusan, igényes betűkkel ír ki dolgokat, és az ablakban lévő gombokra lehet egérrel kattintani, hogy valami történjen. Például, az Eclipse igazi programnak néz ki, míg amiket eddig írtunk, az csak nyomiság.

Legminimálisabban így kellene kinézni a programunknak:

Egy ablakos program

Okés, akkor vajon hogyan kell ablakot csinálni? Vajon hogyan fogunk ilyen bugyikék színátmenetet csinálni, meg csillogó piros X gombot rá?

Hogy lesz az, hogy más operációs rendszereken, például Linuxon, MacOS-en másként néznek ki az ablakok?

Egy ablakos program Mac-en

Vajon ott is ezt meg kell rajzolni? Jajj de sok meló!

Szerecsére a helyzet egyszerűbb, mint gondolnád. Senki soha nem rajzol ablakot. Az ablakot az operációs rendszer ablakozója rajzolja - a Windows, a Linux ablakozója, stb.

Természetesen minden operációs rendszerben másként kell ablakot csinálni, és ez nem is túl könnyű. Windows esetén 200 sornyi C kódot kell írni egy üres ablakért... de ugye mi nem C-t használunk?

Mi Java-t használunk, ahol nem csak a processzorok és az operációs rendszerek közti különbség, de még az ablakozó rendszerek közti különbség sem jelent akadályt.

A példaablakunkat ez a kis program csinálja:

public class HelloGui {
    public static void main(String[] args) {
        JFrame frame=new JFrame();
        JLabel label=new JLabel("Gipsz Jakab");
        frame.add(label);
        frame.setSize(200, 100);
        frame.setVisible(true);
    }
}

Helló Gipsz Jakab!

Mindjárt megnézzük, mitől megy, de először is egy pici kitérő a következő részben...