Mega Code Archive

 
Categories / Java / Swing JFC
 

Traverse Tree

/* Definitive Guide to Swing for Java 2, Second Edition By John Zukowski      ISBN: 1-893115-78-X Publisher: APress */ import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import java.awt.*; import java.util.*; public class TraverseTree {   public static void main(String args[]) {     JFrame frame = new JFrame("Traverse Tree");     Object footballNodes[] = { "Giants", "Jets", "Bills" };     Vector footballVector = new NamedVector("Football", footballNodes);     Object newYorkNodes[] = { "Mets", "Yankees", "Rangers", footballVector };     Vector newYorkVector = new NamedVector("New York", newYorkNodes);     Object bostonNodes[] = { "Red Sox", "Celtics", "Bruins" };     Vector bostonVector = new NamedVector("Boston", bostonNodes);     Object denverNodes[] = { "Rockies", "Avalanche", "Broncos" };     Vector denverVector = new NamedVector("Denver", denverNodes);     Object rootNodes[] = { newYorkVector, bostonVector, denverVector };     Vector rootVector = new NamedVector("Root", rootNodes);     JTree tree = new JTree(rootVector);     tree.setRootVisible(true);     TreeModel model = tree.getModel();     Object rootObject = model.getRoot();     if ((rootObject != null)         && (rootObject instanceof DefaultMutableTreeNode)) {       DefaultMutableTreeNode root = (DefaultMutableTreeNode) rootObject;       //    printDescendents(root);       Enumeration breadth = root.breadthFirstEnumeration();       Enumeration depth = root.depthFirstEnumeration();       Enumeration preOrder = root.preorderEnumeration();       printEnumeration(breadth, "Breadth");       //      printEnumeration(depth, "Depth");       //      printEnumeration(preOrder, "Pre");     }     TreeSelectionListener treeSelectionListener = new TreeSelectionListener() {       public void valueChanged(TreeSelectionEvent treeSelectionEvent) {         JTree treeSource = (JTree) treeSelectionEvent.getSource();         TreePath path = treeSource.getSelectionPath();         System.out.println(path);         System.out.println(path.getPath());         System.out.println(path.getParentPath());         System.out.println(((DefaultMutableTreeNode) path             .getLastPathComponent()).getUserObject());         System.out.println(path.getPathCount());       }     };     tree.addTreeSelectionListener(treeSelectionListener);     JScrollPane scrollPane = new JScrollPane(tree);     frame.getContentPane().add(scrollPane, BorderLayout.CENTER);     frame.setSize(300, 400);     frame.setVisible(true);   }   private static void printEnumeration(Enumeration e, String label) {     System.out.println("-----" + label + "-----");     while (e.hasMoreElements()) {       System.out.println(e.nextElement());     }   }   public static void printDescendents(TreeNode root) {     System.out.println(root);     Enumeration children = root.children();     if (children != null) {       while (children.hasMoreElements()) {         printDescendents((TreeNode) children.nextElement());       }     }   } } class NamedVector extends Vector {   String name;   public NamedVector(String name) {     this.name = name;   }   public NamedVector(String name, Object elements[]) {     this.name = name;     for (int i = 0, n = elements.length; i < n; i++) {       add(elements[i]);     }   }   public String toString() {     return "[" + name + "]";   } }