Zkušenost z JavaFX nemám. Pokud tam jde snadno nadefinovat vlastní komponenty, které budou mít vlastní vzhled, tak to nemusí být tak špatné. Pokud se ale jedná o nějakou sadu komponent typu klasické widget frameworky, kde vlastní vzhled rovná se překrytí nějaké metody na vykreslování, všechno tvrdě nahardkodit a to samé z handlováním eventů, tak to taková pecka nebude.
V podstatě neexistuje žádný solidní toolkit pro vytváření UI, které je kompletně vykreslované na grafické kartě, což je důležité zejména právě pro aplikace, které potřebují mít vlastní vzhled nebo aplikace, kde prostě je nutné použít opengl/direct3d pro vykreslování do hlavního okna. Tuším, že např. Qtčkovej OpenGLWidget to hackuje tak, že vytvoří nějaké skryté okno, jenom aby pro něho mohl vytvořit OpenGL kontext a následně renderovat do framebufferu, jehož obsah se potom zobrazí jako normální obrázek do hlavního okna, takže je možné tímhle "hackem" mít OpenGL obsah i v okně, kde mám jinak klasické widgety, nicméně pro nějaké appky typu game engine apod.. to asi není vhodné, protože je vykreslování jednoho frejmu tím pádem podstatně delší.
Qt QML je hodně dobrá věc, ale je to vhodně spíš pro appky, co mají bežet na nějakém embedded systému a potřebují mít vlastní vzhled. Na velké aplikace na desktopu to zřejmě vhodné není (někde jsem to četl).
Jsou tu nějako knihovny jako
https://blogs.gnome.org/clutter/, ale ty jsou asi zase moc low level. Co jsem zatím viděl, tak všechny appky, co mají vzhled vykreslovaný na grafické kartě mají vytvořen nějaký vlastní framework, který je ale většinou příliš svázaný se zbytkem kódu appky, takže nejde jen tak ten tu část vzít a použít ji.
Závěř: pokud chcete vlastní vzhled apky, pravděpodobně JavaFX bude nejlepší volba, možná pak to QML.