08-GUI frameworkök

Őőő, GUI, bitte? A GUI azt jelenti, hogy Graphical User Interface, azaz grafikus felhasználói felület. Ez az, amit nap mint nap használsz az asztali számítógépen, a tableten, a mobiltelefonon, hiszen senki sem használ ilyesmit:

Az 1980-as években ilyen volt egy üzenetküldő program

hanem sokkal inkább ilyesmit:

2016-ban így néz ki egy program

Feladat: Szerinted mi a különbség a két kép között?

Szerintem:

Hogyan kell:

Hú... Ez jó sok kérdés - és az igazt megvallva, jó sok meló is! Ha minden képponttal nekünk kellene foglalkozni, akkor biztos, hogy két hétig csak egyetlen ablakot rajzolgatnánk, és olyan sok részletre kellene figyelnünk, hogy szinte sose lennénk készen bármi hasznos dologgal.

Szerencsére már tudjuk az előző fejezetből, hogy ez azért ettől egyszerűbb. Ugyanis, gondos kezek létrehoztak frameworköket. A framework azt jelenti szó szerint, hogy vázszerkezet, szóval valami, ami már majdnem készen van.

Egy kis ház framework

Természetesen teljesen még nincs készen, de legalább nem nulláról kell kezdenünk az építkezést.

Mit csinál egy GUI framework?

Általában kezeli a következő dolgokat:

A GUI framework sokszor használja a grafikai frameworkot:

Egy kicsit most használtunk mindkettőt az előző részben. Most már elárulhatom: a Swing nevű GUI frameworköt használtuk az előző részben, és egy nagyon pici ImageIO frameworkot használtunk a képek betöltéséhez.

Emlékszel az első képkirakós példára?

public class Slideshow {
    public static void main(String[] args) {
        // Swing
        JFrame frame=new JFrame();
        frame.setSize(220, 190);
        frame.setTitle("Helyek");
        frame.setLayout(null);
        frame.setVisible(true);

        JLabel label=new JLabel();
        label.setBounds(0,0,286,160);
        frame.add(label);

        label.setIcon(
            // ImageIO
            new ImageIcon(ImageIO.read(new URL("http://dongo.biz/jm/resource/salgotarjan.jpg")))
        );
    }   
}

Ebben van egy sornyi ImageIO a kép betöltésére, és a maradék az tulajdonképpen mind Swing cucc. Meg is jelöltem, hogy melyik melyik, keresd meg a kódban!

Hogyan használunk egy frameworköt?

Elég egyszerűen - eddig talán fel sem tűnt, olyan könnyedén! Egyszerűen bármikor, amikor egy olyan osztályt használsz, amit nem Te készítettél, akkor tulajdonképpen egy frameworkot használsz!

Ez mind jár a Java nyelvhez!

Amikor egy String-et használsz, akkor a Java lang frameworköt használod. Amikor egy JFrame-t használsz, akkor a Swing frameworkot használod. Amikor meg a képet betöltöttük, az az ImageIO framework volt.

Mennyi ilyen framework meg osztály van?

Rettentően sok! A Javahoz alapból jár 4240 osztály (Java SE8). De ez még semmi! Az Interneten naponta jelennek meg és tűnnek el további frameworkok, sok-sok osztállyal.

Most akkor ezeket mind-mind meg kell tanulni használni?

Huhh? Komolyan? Nos, erre mit mondhatnék? Azt a 4-5 féle frameworkot és 10-20 osztályt, amit a következő 2 évben használni fogsz, igenis meg fogod ismerni - mert használod. A maradék több ezer osztályt meg tegyük félre egyelőre. De ne legyen ettől rossz érzésed, nincs szükséged arra, hogy a világ összes Java osztályát megismerd.

Osztályok és ételek

A világon rengeteg sok ennivaló létezik, tudjuk, hogy mind ehető, és csillapítja az éhséget. De ha látsz egy ilyet, akkor talán még a nevét sem tudod:

Ennek tudod a nevét?

No és akkor mi van? Lehet, hogy Neked sosem kellett ilyet enni, szóval attól még hogy nem vágod kívülről az összes indiai kaja nevét, attól még nem kell kétségbe esni! Szerintem kevés indiai tudja azt, hogy mi az a rántott csirke!

Egyszerűen mindenki azt a 10-20 féle ételt eszi, ami tetszik neki. Ennek tudjuk a nevét is, az ízét, a színét, az illatát!

Az osztályokkal sincs másként: azt a 10-20 osztályt jól megismerjük amit használunk, tudjuk a nevét, tudjuk mire való! A többivel meg foglalkozunk akkor, ha valami igazán egzotikusra vágyunk, okés?

A frameworkok a barátaink

A rengeteg kész framework segít abban, hogy könnyebben és gyorsabban elérjük a célunkat, mert nem kell mindent magunknak leprogramozni. Egy framework nem más, mint egy adott célra készített osztályok gyűjteménye, mint például GUI készítésre (Swing) vagy képek betöltésére (Image IO).