• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 333
  • Last Modified:

How to get a root from a JTree?

Hi.

I wanted to get all leafs of a jTree. I made it like this, but that works only, if I have already the root.


DefaultMutableTreeNode t2;
String AllLeafs = "";

t2 = root;

while (t2 != null)
{ t2 = t2.getNextNode();
  try
  { if (t2.isLeaf())
    { AllLeafs += "/" + t2.toString();
    }
  }
  catch (Exception event)
  { t2 = null;
  }
}

Then I wanted to get the root like this,
but there is a problem with getModel: it doesn´t get the DefaultTreeModel, but a TreeModel, and from TreeModel I don´t get a DefaultMutableTreeNode (the type of t2).

DefaultTreeModel treeMod = (DefaultTreeModel) jTree1.getModel();
t2 = treeMod.getRoot();

The second question is, how to find out, when my tree is finished? (I used the try-catch-method, but I would be interested in knowing the "official" solution.

Thanks so much in advance!!!
0
spetrowitsch
Asked:
spetrowitsch
1 Solution
 
_lychee_Commented:
to your second qn, the tree is finished when getNextNode() is null... so just test for it....

the java API states that getNextNode is inefficient for traversal... u should get a depthFirstEnumeration of the tree and then traverse that....

for ur first qn, y don't u just traverse the tree yourself? eg. (doesn't use DefaultMutableTreeNode)... say t is part of the tree...

Stack s = new Stack();
TreeNode root = t;
TreeNode cur;
Enumeration e;
String AllLeafs = "";

while ((cur = root.getParent())!=null) root = cur;

s.push(root);
while (!s.empty()) {
   cur = (TreeNode) s.pop();
   if (cur.isLeaf()) {
      AllLeafs+="/"+cur.toString();
   } else {
      e = cur.children();
      while (e.hasMoreElements()) s.push(e.nextElement());
   }
}

// done.
0
 
vivexpCommented:
Hi,
Visit this site for an example in JTree...
http://www2.gol.com/users/tame/swing/examples/SwingExamples.html

Hope this info is useful to u...

0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now