One of the other times I was playing around with java for desktop applications, using swingx. I already had some experience with widgeting systems from back at my university time and my first PC had been an ATARI ST, which I heavily used to develop simple games. Thus, I really liked the display system, esp of how swingx was/is doing it: Just create a pane and dump everything in there. Either have it "located" on that pane as the pane decides it (e.g. flow panes) or in a grid (grid panes). And guess what: Panes could contain panes! And what I really loved: Let the pane (swingx) do the positioning and rendering. And all the calculations, like giving it the proper height and width on resize. It was just that easy: Create a pane, slam a text into it, then an input field, then a button and ready!
Thus, I used this concept also on the pPHPlib. Here, you create a Document, add a pane or visual to it and that's it. Or course, internally panes are resolved as but you just do not need to worry about this. The lib will do it for you!
ps: I know, a lot of widgeting systems already did this before java, but java was how I really came into contact with it.