MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

import java.awt.BorderLayout;
import java.util.Enumeration;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

public class MainClass {
    public static void main(String args[]) {
        JFrame frame = new JFrame("Traverse Tree");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTree tree = new JTree();
        tree.setRootVisible(true);
        TreeModel model = tree.getModel();
        Object rootObject = model.getRoot();
        if ((rootObject != null) && (rootObject instanceof DefaultMutableTreeNode)) {
            DefaultMutableTreeNode r = (DefaultMutableTreeNode) rootObject;
            printDescendents(r);
            Enumeration breadth = r.breadthFirstEnumeration();
            Enumeration depth = r.depthFirstEnumeration();
            Enumeration preOrder = r.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.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());
            }
        }
    }
}