I've been experimenting with gwt for a project at work. So far, I'm really impressed with what it's capable of. It's worth checking out.
I've done a little Swing, and while it's not a clone of it, the paradigm is basically the same. You define a layout, toss in your widgets, and define the events that drive actions. It's pretty impressive what you can do -- stuff I wouldn't have a clue how to hand code in JavaScript is quick and painless. I made a reusable component for our site (still learning about how to skin it, but it's coming along) that adds rows to a table with a click of a button. Each row as a popup, a text field, and a "delete me" button that can delete the row. It took about 15 minutes to write, and it works perfectly.