As I've said before, I'm not enamoured with Swing though it remains the lesser of all GUI evils when making a crossplatform app with Java. I believe my biggest gripe is the "event-dispatching thread" set up which causes event sparked by your GUI to occur in a different thread than everything else. Want a button to cause you app to count to one million (insert a more realistic, time consuming task)? Without learning about threads and how to start your own, your GUI is going to sit there, locked up until the app's done counting. Annoying.

In spite of this shortcoming, Sun's best solution on using threads with swing is, "Don't use them." Annoying. It really makes me wonder if the criticism I'd seen that Swing was intended as a means to debug database apps wasn't really that far from the mark. Threads are not incredibly difficult, but they are quite a bit of overhead for a GUI. I can't even update the GUI from the GUI-invoked process to tell the user I'm, say, 43% done without setting up another thread, making all sorts of objects "final" so that I can pass them to inner classes, etc.

If there were the only problem with Swing, I'd be a happy camper. I'd write a quick blog condemming how unnecessarily difficult it is for me to pass and retrieve objects with all these wacky threads flying around to cure FGS ("Frozen GUI Syndrome") and be done with it. But the shortcomings don't end there; Swing is also unnecessarily unintuitive and lacking many of the "nicities" you'd expect from a mature GUI widget toolkit.

Rather than digress into another pre-rant mini-rant on the topic, and also so that I can remember where this page is when I swap computers (and lose my bookmarks), take a look at what you need to do to add, say, a JButton to a JTable. Or, even simpler, to have a JTable that sorts when a user clicks on the title at the top. Even REALbasic did that for me without a single line of code. Sheesh.

Full rant to come, I'd imagine. In other news, my 100 MHz Pentium laptop is loaded with Win98, VIm, Ultra-Edit, and HTML-Kit and is ready for VB 6 and SQL Server. After that, it'll probably explode. Poor thing.