Arne said:
legacy developer skills + tight schedule or need to support old Java
versions => Swing
otherwise => JavaFX
I mostly agree with Arne, except I expand the use cases for both.
I suggest Swing for workhorse desktop applications, that is, anything
where you need a good, solid, classic GUI framework. Even many new
apps will fall into this category sometimes.
JavaFX is newer and flashier (pun intended). Arne is right to suggest
pushing our developer skills in this direction. It is an emerging space.
The "legacy" Swing space is large and not done growing.
(Large within the Java universe, that is. Ahem.)
I've worked on many GUIs over the years including some intellectual
forebears of Swing - OPEN LOOK, Motif and similar.
http://en.wikipedia.org/wiki/OPEN_LOOK
Once you internalize the notions of event-driven programming
https://www.google.com/search?q=event-driven+programming
, in particular for Java in Swing and JavaBeans, it is pretty second-nature
to program GUIs by hand. (Even in XML.) Then wizards like the ones
Eclipse (for Android) and NetBeans (for Swing) sport make more sense.
Both Swing and JavaFX are based on the same programming principles.
So the decision becomes one of feature support and platform availability
for your customers.