Swing is a pile. I recently did a widget for our dev product - its a graphical programming widget similar to prograph. I found it easier to just learn the Java2D drawing prims, register for all the events, and do everything (drawing, event dispatch, etc) myself. It was the only way to get decent performance I think.

But I also agree with Bryce's assertion that linking protocol to type is a stupid carryover from C++.

Java blows on a lot of levels.