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

counting the nodes in JTree

I want to be able to count the nodes below a certain level in a JTree component,

how do i do this?
0
plaskowj
Asked:
plaskowj
  • 9
  • 8
1 Solution
 
heyhey_Commented:
i haven't tested the code, but you should see the idea

int countAllSubChilds(TreeNode node)
{
// if the node is leaf return 1
   if (node.getChildCount() == 0) return 1;

// if the node is not leaf - count all the childs
   int count = 0;
   for (int i = 0; i < node.getChildCount(); i++)
   {
       count += countAllSubChilds(node.getChildAt(i));
   }

   return (count + 1); // add 1 for this node (if you count all the nodes not only leaves)

//   return count; // use this if you want to count only tree leaves
}


hope this helps
  heyhey

P.S. What's going on with your "JTree simple question"
0
 
plaskowjAuthor Commented:
ok i have set up my JTree in a simple way:

DefaultMutableTreeNode top = new DefaultMutableTreeNode("Administration");
  DefaultMutableTreeNode D1 = new DefaultMutableTreeNode("Department1");
top.add(D1);
tree = new JTree(top);

so how do i fit the above into this, where do i declare something to be a node?

0
 
heyhey_Commented:
top and D1 are DefaultMutableTreeNode which is a special kind of TreeNode

you can count all the nodes from the tree using
int allNodesCount = countAllSubChilds(top) ;

you can count all the nodes below D1 using
int sublNodesCount = countAllSubChilds(D1) ;

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
plaskowjAuthor Commented:
so finanly if i only wanted to count what is below D1 for example and not what is in D2 ( D2 being a sub node of D1) how whould i do this?
0
 
plaskowjAuthor Commented:
i figured out how to count below D1, but how do i count sub nodes, given that i only have the path or is there a way of retrieving node name?

many thanks
0
 
heyhey_Commented:
this how you can get selected node (extracting it from the TreePath)

TreePath path = tree.getSelectionPath();
TreeNode node = (TreeNode)path.getLastPathComponent();

0
 
heyhey_Commented:
I'm just curious ... What do you think is 'GRADE A' Answer ?

>> Name: plaskowj
>> First Login: 11/12/98
>> 
>> Last 10 Grades Given
>> B C B

0
 
plaskowjAuthor Commented:
to be honest i don't really look at the grades- the answer you gave me was great, next time i will rate it as excellent,

thanks anyway

Ps if you want to post a request for rating i will re-rate it with grade A
0
 
heyhey_Commented:
no, no, no problems ;-)

as I said, I was just curious ....

What's going on with your "JTree simple question" ?

0
 
plaskowjAuthor Commented:
The problem i am having is that firstly I don't want "all" the leafs to be leafs, but instead empty folders- how do i do this?

and i also want to change the leaf icon to something else, how ?
0
 
heyhey_Commented:
you can easy put your own Leaf icon using

UIManager.put("Tree.leafIcon", new ImageIcon("icon.gif"));

but if you want some leaves to have different icon than other leaves, you'll need to implement custom TreeCellRenderer (that is a component that knows how to render / paint JTree nodes)

0
 
plaskowjAuthor Commented:
can you give me an example of cell rendering?
0
 
heyhey_Commented:
check this question
http://www.experts-exchange.com/topics/comp/lang/java/Q.10113010
there are some usefull comments there and I'll post some 'simple' code in a few days ...
0
 
plaskowjAuthor Commented:
cheers, but one last thing


where do i put this code?
UIManager.put("Tree.leafIcon", new ImageIcon("icon.gif"));


0
 
heyhey_Commented:
probably you can put this code anywhere you want (it changes the default TreeLeaf image 'forever')
0
 
plaskowjAuthor Commented:
so why didn't it work- i set the icon.gif- to an icon which i placed in my project
0
 
heyhey_Commented:
don't know ... it should work ...
I'll check this later and post a comment in the real question :)

(you can take a look at SampleTree example in your Swing directory - they use it too)


0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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