There are two types of GUI:
More specifically, as I'm writing this text, the following GUI softwares are running on my computer:
This leads to my point: if you plan to target everyday users (not the industry users), forget about platform-independent GUI. Can you imagine WinAmp being developed using Swing? Or WindowsMessenger? Not to talk about WinZip? and its deep shell integration... The truth is that platforms are different in essence, and trying to deny these specificities will alienate your users. You don't design a GUI on Windows the way you design it on MacOS or on Linux, and trying to do so will lead to ugly results on all of them (ugly meaning: not following user's expected LookAndFeel?).
Therefore: if you target everyday users (my mother), opt for a GUI framework that allows you to create platform-dependent code so that you can integrate more with the native environment. But ensure that this framework will allow easy (not transparent) port on other platforms the day you will want to target other user bases.
However, if you plan to target professional users on several platforms, don't hesitate and go for a fully platform-independent framework.
Conclusion: if your Java application has a client and a server part, and if you don't opt for a ThinClient approach, the server GUI should be written in JavaSwing and the client code in SWT.
See also: TheGuiThreadIsTheMainThread, PlatformIndependence, PlatformPortability, ProgrammingLanguageNeutralGui, NoApplication