
Java Swing comes with "pluggable look-and-feel technology", which essentially boils down to the fact that interfaces can be "skinned" (although this is simplifying a tad) and is therefore, extremely flexible. By default, Java ships with a cross-platform look-and-feel (LAF), which means your apps can look consistent across all platforms, or LAFs that mimic the look of a specific platform, say Windows, for example. However, one of the chief complaints of Java desktop applications is its "look". It basically stems from two issues:
Java is the language of choice at my university, so I have fair experience with using Swing. All three (major) platforms are available to develop on, and I take the trouble to see that things work nicely on all three.
I'm a big believer in consistent and nice looking interfaces: The nicer your GUI looks, the more productive you are, is my belief - So everything using native widgets is a big thing for me. It goes as far in that I refuse to have GTK1 or Qt installed on my own PC, as I don't want there to be the potential of me seeing applications using different widgets. Sometimes this limits me in that I can't use certain applications, but now, as all my applications look the same and follow the same design philosophies, I can get a lot more work done than when using a 'hybrid' interface.
Getting to the point, the Swing GTK look and feel is a crime. How it could even be suggested that it's a 'native' look and feel is beyond me. I don't understand why the chosen method of creating a native look'n'feel is to re-implement the widgets in the style of that platform, instead of just using the native rendering?
Disregarding how poorly it actually simulates GTK rendering, and how few theme engines it can simulate, it is also *slow*. Using the GTK look and feel disables optimised rendering - Scrolling in a JScrollPane, for example, causes the update rectangle to be the size of the visible area rather than the size of the newly exposed area. There is a lot of work to be done on this, and I hope in the future that the native look and feel's (which are passable on Windows and Mac, imo), actually use native rendering.
On a slightly different note, has anyone tried SwingWT? http://swingwt.sourceforge.net/ - Perhaps an interim solution.