
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:
Good level headed review. It shows Swing can be used to make good looking apps. I especially like the imagery app http://www.xerto.com/images/screen-shot.png
That is one of the best looking apps I have seen.
@Darius - I find Java, especially 1.5 to be fairly fast. It is also just going to get better and better. The benfit of using Java is you get a nice language with an excellent standard library, which can be used to make apps quickly. And finally we are seeing that good looking, fast cross platform is possible too.