What you're talking about is the composite
pattern.
The composite is a design structure that allows you to define objects that contain other objects, some of which may in turn contain more objects, and some which may not ("leaf nodes" in your menu tree).
I wish I could draw a UML diagram for you, but
This Java World article explains it and has a diagram.
Basically you define a base class that is abstract and defines the contract for a primitive element in your containment structure. then, you extend that base class with two descendants, one that simply implements the contract specified by the base class (this will be your leaf node), and one that is a composite (a node that can contain other nodes).
Just a note too, after seeing your code... adhere to bean standards... no public members unless absolutely necessary... use accessor/mutator pairs. So your code would look something like this:
Base class
Leaf node class:
Composite node class:
Then all you have to do is run your DB query or whatever, and materialize the structure. Your primary containment for your main menu items is a Composite (CompositeMenuItem). Then just start adding components. If the component you're adding has sub-nodes, add a composite. If it doesn't, add a Leaf.
Play with that and see how it works.
Good luck