[SOLVED] Eclipse GUI JAVA kérdés -

Fórumok

Sziasztok,

Úgy alakult, hogy GUI-s programot kell csinálnom JAVA-ban, Eclipse IDE-vel.
Még nem csináltam ilyesmit, kérdezem, hogy SWING, AWT, SWT, vagy JFX-et ajánlanátok-e, és ha igen, akkor miért?

update: akkor SWT-t fogok használni, köszönöm a hozzászólásokat.

Hozzászólások

Éreztem, hogy a top 5 kommentelő között leszel.

A témához visszatérve: Én SWT-t használnék, ha fontos, hogy a platformba minél jobban integrálódjon a felület (natív kinézete legyen).
A második preferencia a Swing, rengeteg library érhető el Swinges komponensként, ami SWT-vel nem.
A JavaFX-et viszont nem ajánlanám.

Hehe... :)

SWT: párszor használtam, de inkább nem tetszett, mint igen.

Swing: sok komponens van hozzá, leirások, elég mélyen dokumentált, tudod debuggolni is (swing explorer), mi most swing + saját css framework segítségével fejlesztünk

JavaFX: itt el kell különíteni a JavaFX 1.x-et a JavaFX 2.x-től. A JavaFX 1.x-et ne használd, nem lesz neked jó. Helyette inkább a JavaFX 2.x-et próbálgatnám, amiben megzúzták a script nyelvet, és normális java kódot tudsz írni, van benne videólejátszó, 3d gyorsítás. Vannak limitációi, ami miatt mi nem választottuk, de neked nagy eséllyel jó lesz.

http://fxexperience.com/

off: azt lehet egyébként tudni, hogy miért Eclipse IDE-vel _kell_ csinálnod?

Mostanában nem néztem, milyenek a GUI designerek, de korábban borzalmasak voltak. Esetleg érdekes lehet megnézni az SWT + JFace párost, illetve az új 4.x-es Eclipse RCP-t magát.

Korábbban saját framework-öt tettünk a Swing fölé, a szempont az volt, hogy ne kelljen GUI szerkesztő, kódból egyszerűen és egyértelműen lehessen összerakni, és ne nézzen ki ocsmányul.

A Swing-el az a bajom, hogy saját maga rajzol, hiába használ (Windózon legalábbis) hardveres gyorsítást, stb, akkor sem az igazi. Linux/GTK+ meg ocsmány a font rendering-je, mert képtelen azonos antialias-t használni, mint az OS GUI toolkit-je. Pedig elvileg ugyanazt a freetype2-t használja, de akkor is gáz, továbbá a GTK téma színeit sem veszi át rendesen. OSX-en nem tudom, milyen.

AWT-t meg szerintem felejtsd el, semmi nem indokolja. Maximum korlátozott beágyazott eszközök esetén lehet létjogosultsága, ahol nincs Swing vagy más.

Az OSX-es L&F egesz jo.

Btw van amugy olyan publikusan elerheto framework, amivel nagyon egyszeru normalis UI-t varazsolni Swingben? Semmi extrara nem vagyok, csak ne nekem kelljen mindenfele panelekkel meg layoutokkal varialni, mert az meg GUI designerben se megy. Foleg formokat raknek ossze.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Ezt a MiG-et megnezem, koszonom.

A JavaFX-tol mindenki ova intett eddig, szoval en meg csak a szaga nyomaba se akartam menni, de amit olvastam rola, az nekem elso ket korben bonyolultnak tunik.

HTML-ben mar elegge jol megtanultam formokat osszerakni, szoval valami hasonlo egyszerusegu lenne jo. Nem ragaszkodok en feltetlen ahhoz, hogy deklarativ legyen, egy ilyen pl. tokeletes lenne:


Form form = new Form();
LabeledInput txtName = new LabeledInput("Name")
form.add(txtName);
form.setSubmitListener(new MySubmitHandler());
myFrame.add(form);
myFrame.show();

Es ennyi, ebbol legyen kepes kitalalni, hogy egy formnak hogy kell kineznie, ne nekem kelljen ezeket kitalalni. Nem erdekel, ha sablonosan nez ki a cucc, nem a dizajn lenne a lenyeg, hanem a funkcionalitas. De nem akarok nyolc panelt meg huszonot sort elbokni ugyanerre a feladatra.

Szerk: olyan, mintha talaltam volna valamit. Illetve egy masikat. Ezek szerint fejlodott azota a tudomany, hogy ilyesmire szuksegem volt. Annak idejen, mikor keresgeltem, akkor mindenfele csak nativ swinges peldakat talaltam, es baromira utaltam az osszeset.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Erre lenne valo az Eclipse RCP Forms UI-ja, de ahhoz meg kene egy RCP app neked, ami overkill.

Viszont talan a JGoodies FormLayout jo lehet neked.
http://www.jgoodies.com/freeware/libraries/forms/


public JComponent buildContent() {
    FormLayout layout = new FormLayout(
            "$label, $label-component-gap, [100dlu, pref]",
            "p, $lg, p, $lg, p");

    PanelBuilder builder = new PanelBuilder(layout);
    builder.addLabel("&Title:",  CC.xy(1, 1));
    builder.add(titleField,      CC.xy(3, 1));
    builder.addLabel("&Author:", CC.xy(1, 3));
    builder.add(auhtorField,     CC.xy(3, 3));
    builder.addLabel("&Price:",  CC.xy(1, 5));
    builder.add(priceField,      CC.xy(3, 5));
    return builder.getPanel();
}