Yeeouch -- from the same thread I posted to -- talk aboutbroken:

Limiting myself to just 5 mins and SwingSet2 only (JDK 1.5.0 B1):

Font renderer is knackered
Cleartype has no effect on font rendering
Window does not update live when resized
Colour chooser not remotely like the Windows version
Menu alpha blending (fade) not honoured
Menu shadow missing
File open dialog buttons (top right) incorrect
File open dialog resize hint (bottom right) missing
Controls should not show focus until is pressed
Cannot use non-XP style controls (can mix and match in native Win32), e.g. use plain grey tabs.
Toolbar should use mini-window title-bar when dragged off the main form.

All of this on Windows XP nearly 2.5 years after it was released.


My follow-up:
    I'm sorry to post twice to the thread, but this really is a pet peeve issue (namely Swing's current state and future). Sorry to seem so down on Swing -- it does its original job very well. But that goal is no longer one people feel needs scratching. It's time to move on.

    The point above is that making a Swing Look & Feel look native almost by definition means that you're behind the curve on implementation. Using native widgets from the start means that you're up to date the second new widgets are released (a la SWT).

    And that's why I think Swing's failed. It was supposed to provide, afaict, a chance for programmers to create a GUI that'd act and look the same crossplatform, which the Java Metal Look & Feel does *very* well. Write once, run [exactly the same] everywhere, from headless code to GUI'd applications. That's what Swing does well.

    People, from Limewire to Netbeans users, don't like the concept of xplat GUIs, though. It's a real compromise where nobody is happy. AWT gets around this issue by using native widgets, not creating new ones virtually from scratch. SWT does the same with a full spectrum of widgets from which to choose.

    Pluggable LAFs are great if you want people to personalize apps (letting users pick the Kunstoff LAF or another pluggable LAF), but if your only usage is of that feature is plugging in native looks, well, you're wasting your time and missing the mark.

    Keep Swing. Continue to provide an xplat look and feel with Swing. Stop work on every new Swing feature. No new widgets, no new look and feels, no more by definition lagging ports of native feels. Move those resources, if not to SWT, then to AWT and fill out that toolset you stopped working on years ago so we can stop extending Canvas. IBM admitted they were wrong to like Swing**; it isn't working out. Sun, catch up.

    ** ref to IBM liking Swing then changing their mind:
    http://today.java.net/jag/page7.html#62