This are at least three question, a single answer is unlikely to cover all aspects
a) What about GUI-Lib
With any detailed information about your requirements it is hard to say which fits better and why. In short
Swing is pure Java, maybe some what slow, but running where java is fully available (not android for example)
SWT is os-aware, used by eclipse for example. Looks like the os appear and seems to be much faster. Good for Windows, Linux, Mac
JavaFX is not commonly used. As far I know it is required to learn a further language.
I have never seen an JavaFX app
b) What about architecture and libs
MVC could be a real good concept. However, there so many different opinions about what MVC really is.
pureMVC is a lib supporting an interpretation of MVC
c) What about Grail
There are already answers about this aspect.
When you mean with "networking app", client server apps with browser front end, there are lots of technologies supporting this.
- GWT
- Captain Casa (JSF)
- Wicket
- IceFace (JSF)
...
(I guess you will find about 40 technologies in the area)
However, the backend is no more Java SE in such cases.
The are no simple answer (no, there is NO "the best"), you have to investigate your needs, technical implication and than choose the right or better known technology.
This is a hard job without a short cut. Any other approach is gambling, you may win, but usually you lost