
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:
The LAF under WinXP:
WinXP-programs have the WinXP theme (Calc, Notepad, ...)
The Command Shell have its own frame-look.
.net-programs have a Win2k LAF.
Win3.1 programs looks also different.
WinXP is itself inconsistent. So there is no need, to be GUI-compatible with it.
And on the Linux/Unix side, there existing no "Standard-LAF". There existing Qt, GTk+, Motif, Athene, FLTK, ...