
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:
I agree with this. Having a L&F totally different from the native one isn't something to worry about.
Now, what I really hate is the "native" GTK L&F, which is totally wrong in oh so many ways... (it looks like some frankenstein GTK app) And it is the default, and in some apps you can't even change it (swing.properties file is ignored), like the Java Wireless Toolkit.