I truly love the Swing GUI toolkit, I enjoy its flexibility, opennes and great abilities.

I know that some people say that Swing is too difficult to learn,
and I partly accept it because it took me several years working in the Swing team
to get the whole picture of the AWT, Java 2D and the Swing itself.

The Swing  history counts more then 10 years and it is definitely not about end.
The new features have already been added to JDK 7
and the new blogs are coming to describe them.

Swing is the best graphical toolkit I have ever worked with,
anyway it could have been implemented even better.

Even the best piece of software in the world would have bugs
and design glitches. At this point I want to stop for a moment,
to look back and remember the cases when
I wanted Swing to be designed in a different way.

This information may be useful for all developers
who are working on any other graphical toolkit.

Swing is written in Java,
so its API is tightly bound with Java language peculiarities
and event high level decisions of the Swing architecture are affected by the language sometimes.

So I'll cover the java related issues first
and then touch some exclusively Swing features.

Java related issues

Swing design