When I have a Java GUI to write it's usually for developers or test engineers to use so it doesn't matter if it's not as shiny as some of the usual desktop applications out there. Recently however I've been designing and writing applications for the typical desktop user and so it's time for me to find a good framework to use. The Swing Application Framework (JSR-296 https://appframework.dev.java.net/) came up by accident while I was throwing together a test app with the Matisse GUI editor in NetBeans 6.0 and after reading up on it I decided to give it a go. Up to that point I was getting to grips with SWT and considering using the Eclipse Rich Client Platform but although there were loads of cool plugins to reuse, there was still a lot to learn.
I must say I'm enjoying a lot of what the framework has to offer but you still have to jump through the usual Swing hoops and "unhide" a lot of what the framework hides on your behalf!
Anyhow, here's a good introduction on "ipaper" of all things!
Two IDE's?
NetBeans claims itself to be "The only IDE you need!": that statement alone is enough to make me want to use something else!
Seriously though, NetBeans lacks the performance and features that I get out of Eclipse so I use both: GUI building in NetBeans 6.0 with Matisse then import the GUI classes to my Eclipse project which are then extended to add the real functionality. My GUI classes remain untouched so I can add more GUI features using NetBeans.
On the Swing front I find that I'm forever reusing and improving various features from old apps. I'm a Log4j fan and I like to use it on every Java project - for Swing apps I've taken to redirecting standard output and standard error streams to a scrolling JTextArea to tail the logged messages as they occur. This makes for quick reuse of non-gui classes that just log what you want to hear about. I've played with chainsaw and logfactor5 but I find my approach to be quite neat.