Gyakorlati alapok IV.

Végre ablakozunk! (AWT, Swing, JavaFX)

 

Frame létrehozása

 

Beállítottuk magasabb szintű kódkeretünket (A kódkeretek beállítása című fejezet), indulhat az ablakozás!

 

Először egy alapkeretet (frame) kell létrehoznunk és ebbe fogjuk belepakolni a további komponenseket. Ezt többféle módon is megtehetjük, itt és most csakis az azon kódokat ismertetem, amelyek a mostani kódkeretre épülnek (mert valójában másképp is megoldhatók). Ehhez a Swing-csomagból importáljuk a JFrame osztályt...

 

import javax.swing.JFrame;
 

...majd belőle származtatjuk a Window-osztályt:

 

class Window extends JFrame

 

Ettől kezdve hozzáférhetünk a JFrame osztály összes belső adatához és metódusához, amelyeket az osztállyal azonos nevű konstruktorban helyezünk el (Window()). A minimális kezdéshez 3 metódus szükséges (valójában csak 2, a címgenerálás nem kötelező):

 

setSize(400,300);

setTitle("PJP - Penzes Java Programming");
setVisible(true);

Nézzük meg a futtatható Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import javax.swing.JFrame;

class Window extends JFrame {
    Window() {
        setSize(400,300);

        setTitle("PJP - Penzes Java Programming");
        setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső oldalán):

 

www.informatika-programozas.hu - Frame

 

Időzzünk el kicsit a keletkezett kódoknál!

 

A Main osztályhoz nem nyúlunk, de a Window osztályban eljátszhatunk a kódokkal. Láthatjuk, hogy a JFrame osztály metódusaihoz szabványos példányosítás nélkül is hozzáférhettünk (például setSize()), de más módszerek szintén működőképesek.

 

Először nézzük meg a metódus-hozzáféréseket a this referenciával (This one, please! - a this referencia című fejezet), amely most az aktuális osztálypéldányra mutat...

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import javax.swing.JFrame;

class Window extends JFrame {
    Window() {
        this.setSize(400,300);

        this.setTitle("PJP - Penzes Java Programming");
        this.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső oldalán):

 

www.informatika-programozas.hu - Frame

 

...majd "klasszikus" osztálypéldányosítással:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import javax.swing.JFrame;

class Window extends JFrame {
    Window() {

        super();

        JFrame frame = new JFrame();
        frame.setSize(400,300);

        frame.setTitle("PJP - Penzes Java Programming");
        frame.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső oldalán):

 

www.informatika-programozas.hu - Frame

 

A továbbiakban mi a legutóbbi, kissé "szájbarágós", de ezért talán a legplasztikusabb, azaz a legjobban átlátható kódot fogjuk továbbvinni.

 

www.informatika-programozas.hu - További információk!

Tapasztaltabb programozók azt is észrevehetik, hogy nem Window-, hanem JFrame-típusú objektumot hoztunk létre (bár az előbbit is megtehettük volna). Ennek oka, hogy nem szándékozunk egyetlen örökölt metódust sem megváltoztatni (overriding), azaz tökéletesen megelégszünk a JFrame által biztosított rutingyűjteménnyel.