I use hierarchical trees a lot in my applications. The way I do it is to start with an existing JavaScript tree package such as
TreeMenu. When I want to create a tree structure to be displayed, I write
Java code that will generate the JavaScript code necessary to build the tree using my dynamic data. I just call the JavaScript APIs of the tree package I'm using.
There are a lot of free or nearly free JavaScript tree packages out there. Just Google "JavaScript tree" and you'll see a lot of them.