I had a similar thing to do a while back. I finally settled on Swing App Framework because it does not try to be the one framework to rule them all.
In the end I wrote the little app, had no surprises, the code turned out to be pretty clean (including uploading in a ackground task), the customer is happy, I am happy.
It aims to provide (stolen from the blurp)
- Application lifecyle, notably GUI startup and shutdown.
- Support for managing and loading resources, like strings, formatted messages, images, colors, fonts, and other types common to desktop applications.
- Support for defining, managing, and binding Actions, including Actions that run asynchronously (in the "background").
- Persistent session state: support for automatically and selectively saving GUI state from one run of an application to the next.
which was exactly what I needed.
Warning: there appears to be little life in this framework as the driving force is rumored to have left Sun/Oracle a while back.
Update: some devs have forked in Project Kenai under the name 'Better Swing Application Framework'. So there may be life after death after all