title: Java Swing JTree Expansion
body: <p>This method works as expected - it creates a JTree with a root node and two child <em>container</em> nodes (each with a respective leaf node):</p>
  
  <pre><code>private JComponent createSideBar()
  {
      final DefaultMutableTreeNode top = new DefaultMutableTreeNode("Projects");
      final JTree tree = new JTree(top);
  
      DefaultMutableTreeNode project = new DefaultMutableTreeNode("project 1");
      DefaultMutableTreeNode version = new DefaultMutableTreeNode("version 1");
      project.add(version);
      top.add(project);
      TreePath treePath = new TreePath(project.getPath());
      // tree.expandPath(treePath);
  
      project = new DefaultMutableTreeNode("project 2");
      version = new DefaultMutableTreeNode("version 2");
      project.add(version);
      top.add(project);
  
      return tree;
  }
  </code></pre>
  
  <p>In this case, the tree starts out closed. I'd like the application to start with all nodes fully expanded so I started by adding the following:</p>
  
  <pre><code>    tree.expandPath(treePath);
  </code></pre>
  
  <p>but when I un-comment it from the code above, the second set of child nodes don't show up, ie: Project 2 and Version 2 do not show up. In fact, all subsequently added nodes never show up.</p>
  
  <p>For what its worth, I'm using JDK 1.5. From the docs, I can't seem to see any restrictions or why this method would have such ill-effects ... I'm going to try to look at the source but was hoping someone might have a good idea what and why this is expected behavior. I'm wondering if each subsequent node 'add' is somehow disallowed somehow - but I can't imagine would work for most run-time use cases.</p>
  
  <p>Thanks,</p>
  
  <p>-Luther</p>