A projekthez
A terv az, hogy a Main-ban nincs semmi más, csak egy programsor, ami létrehoz egy új FirstWindow példányt:
public class Main {
public static void main(String[] args) {
new FirstWindow();
}
}
A terv másik része, hogy - mivel most nagyon szépen programozunk - a programunk minden darabkáját külön osztályba tesszük, pont úgy, ahogy Jack és Jane és a Kocsma során megtanultuk.
Tehát az ablakunk is egy külön osztály lesz:
public class FirstWindow {
}
Nagyszerű. Szóval akkor induláskor meghívódik a FirstWindow konstruktora - ami most a megörökölt alap konstruktor lesz, ami nem csinál semmit, emiatt ugyan a program látványosan egyszerű, de még nincs ablakunk :)
Csináljunk konstruktort:
public class FirstWindow {
public FirstWindow() {
}
}
Ó, mostmár a saját kódunk nem csinál semmit, micsoda megvalósított letisztult Zen harmónia! No de mi ablakot akartunk, szóval haladjunk tovább:
Csináljunk konstruktort:
public class FirstWindow extends Form {
public FirstWindow() {
window().show();
}
}
Hm, két újdonság:
(Ha esetleg a Form pirossal alá van húzva, akkor organize imports azaz Ctrl+Shift+O, vagy menj fölé az egérrel, és válaszd az "import Form" quickfixet. Emlékszel: import.)
Indítsd el!
Tadaa, kész az ablak!
Na milyen volt? Értelmesebb, rövidebb a program, mint a hagyományos Swing frameworkben?
Ha átugrottad az előző fejezetet, akkor ez a window().show() kissé fura írásmódnak tűnik, és ettől még furábbakat fogunk írni hamarosan. Két trükk van itt:
A window() által létrehozott objektum metódusa a show, ezért a window().show() írásmód.
A név az egy szöveg, és tutira van text() metódusa ennek a window() buildernek. Használjuk arra, hogy az ablak szövegét (azaz a fejléc szövegét) beállítsuk:
public class FirstWindow extends Form {
public FirstWindow() {
window().text("Hello").show();
}
}
A label egy olyan widget, ami fix szöveget tartalmaz, és a program futása során nem változik a szöveg sosem.
public class FirstWindow extends Form {
public FirstWindow() {
window().text("Hello").add(label("Szia világ!")).show();
}
}
Hm, nem rossz, bár kezd kicsit széles lenni (és vízszintesen nem szeretünk görgetni). Közben elkezdtek támadni a zárójelek is! Mi lenne, ha ugyanezt másképpen tördelnénk, és minden .-al kezdődő részt új sorba raknánk?
public class FirstWindow extends Form {
public FirstWindow() {
window() // legyen egy ablak
.text("Hello") // aminek a text-je legyen helló
.add( // aminek a belsejébe tegyünk...
label("Szia világ!")// egy labelt, aminek a szövege Szia világ
)
.show(); // és végül mutassuk meg az ablakot
}
}
Mit is mondhatnék, itt Alan Kay, a GUI és az OOP úttörője rengeteg híres mondata közül az egyik:
Az egyszerű dolgoknak egyszerűnek kell lennie, a bonyolult dolgoknak pedig lehetségesnek.
Legalábbis azt már látjuk, hogy ez tényleg egyszerű!