Mi a következő megoldást választottuk. Mivel alapvetően java-ban fejlesztünk, ezért a swing és a javafx 2.0 között vacilláltunk, végülis a swing győzött, mert a javafx 2.0-ból hiányoztak dolgok, amik nekünk kellettek.
Tehát írtunk egy css framework-öt, ami a swing-re alapul, és saját propertiary css formátumban lehet elemeket style-olni. Amivel kiegészítettük, az a változók definiálása @var(x=13) amit azután a css-ben lehet használni: #myComponent { width: @expr(x);} illetve a változó érték az egy kifejezés is lehet, és használhat másik változókat is: @var(y=13*x+14) Amivel ez többet tud, mint a javafx 2.0, hogy lehetőség van css-ből widget méretet állítani, illetve a változó deklarálása, valamint a css egymásba ágyazhatósága (@import). (meg valószínűleg egy csomó minden más :))
E fölött van egy layout engine, a trükk az, hogy egy container méretét nem fixen határozzuk meg, hanem a layout-nak megfelelően. Pl. van olyan layout, ahol egy lista a bal felső sarokban 200x300 pixel 1024x768 felbontásban. Egy másik layoutban a lista a jobb alsó sarokban van, 400x530 pixel méretű 1024x768 felbontásban. Ezekre az anchor pontokra lehet az egyes containerek becsatolni, akik átveszik a szülő container méretét, és a benne lévő widget-ek méretét pedig globális változóból, és a container méretéből számoljuk. Ezt megint csak azért tudjuk megtenni, mert saját framework-ünk van.
A különböző felbontást úgy kezeljük, hogy minden egyes felbontás/layout kombinációhoz külön css file-unk van, a rendszer pedig felismeri a képernyő felbontását, és annak megfelelő css-t tölti be.
Az alap widget-ek leírását egyetlen css file-ban tároljuk, a layout file-ok elég kicsik, néhány kb-osak.