java tree自動展開樹

package com.EditJTree;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.Enumeration;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
  
  	//java tree自動展開樹
public class JTreeTest extends JFrame {  
  
    //增加帶滾動條容器  
    JScrollPane jScrollPane1 = new JScrollPane();  
  
    //創建樹對象  
    JTree treeObj = new JTree();  
  
    public JTreeTest () {  
        try {  
            jbInit();  
        } catch (Exception exception) {  
            exception.printStackTrace();  
        }  
    }
  
    private void jbInit() throws Exception {  
        getContentPane().setLayout(null);  
        setSize(new Dimension(434, 347));  
        setTitle("JTree Test");  
        jScrollPane1.setBounds(new Rectangle(9, 9, 429, 317));  
        this.getContentPane().add(jScrollPane1);  
        expandTree(treeObj);  
        jScrollPane1.getViewport().add(treeObj);  
        setVisible(true);
    }  
  
    /**完全展開一個JTree      
     * @param tree JTree 
    */  
    public static void expandTree(JTree tree) {  
        TreeNode root = (TreeNode) tree.getModel().getRoot();  
        expandAll(tree, new TreePath(root), true);  
    }  
  
    /**      
    * 完全展開或關閉一個樹,用於遞規執行      
     * @param tree JTree      
    * @param parent 父節點      
     * @param expand 爲true則表示展開樹,否則爲關閉整棵樹      
     */  
    private static void expandAll(JTree tree, TreePath parent, boolean expand) {  
  
        //Traverse children  
        TreeNode node = (TreeNode) parent.  
                        getLastPathComponent();  
        if (node.getChildCount() >= 0) {  
            for (Enumeration e = node.children(); e.hasMoreElements(); ) {  
                TreeNode n = (TreeNode) e.nextElement();  
                TreePath path = parent.pathByAddingChild(n);  
                expandAll(tree, path, expand);  
            }  
        }   
  
        if (expand) {  
            tree.expandPath(parent);  
        } else {  
            tree.collapsePath(parent);  
        }  
    }  
    public static void main(String[] args) {
    	JTreeTest dJTreeTest = new JTreeTest();
    }
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章