tree.expandPath(new TreePath(treeModel.getPathToRoot(childNode)));

解决方案 »

  1.   

    //n是你要打开叶子的位置
    tree.setSelectionPath(tree.getPathForRow(n));
    tree.expandPath(tree.getPathForRow(n));
      

  2.   

    我写了个方法,你试一下:
    public void initTree() {
        // 得到根结点
        DefaultMutableTreeNode root
            = (DefaultMutableTreeNode)tree.getModel().getRoot();
        // 深度遍历整个树
        Enumeration df = root.depthFirstEnumeration();
        DefaultMutableTreeNode  temp = null;
        while(df.hasMoreElements()) {
            temp = (DefaultMutableTreeNode)df.nextElement();
            // 如果不是叶子节点,则展开此结点
            if(!temp.isLeaf()){
                tree.expandPath(new TreePath(temp.getPath()));
            }
            // 选中你想要的结点(假设此结点显示的名字为football)
            if(temp.toString().equals("football")) {
                tree.setSelectionPath(new TreePath(temp.getPath()));
            }
        }
    }
      

  3.   

    全部展开,然后选择某个节点
    DefaultMutableTreeNode root= (DefaultMutableTreeNode)tree.getModel().getRoot();
    expand(root);
    jtree.setSelectionRow(int);public void expand(DefaultMutableTreeNode node){
    if(node.isLeaf())return;
    int child=node.getChildCount();
    for(int i=0;i<child;i++)
      expand((DefaultMutableTreeNode)node.getChildAt(i));
    jtree.expandPath(new TreePath(jtree.getModel().getPathToRoot(node)));