Tree1.java Source code

Java tutorial

Introduction

Here is the source code for Tree1.java

Source

/*
Swing, Second Edition
by Matthew Robinson, Pavel Vorobiev
    
*/

import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

public class Tree1 extends JFrame {

    protected JTree m_tree = null;
    protected DefaultTreeModel m_model = null;
    protected JTextField m_display;

    public Tree1() {
        super("Sample Tree [OID]");
        setSize(400, 300);

        Object[] nodes = new Object[5];
        DefaultMutableTreeNode top = new DefaultMutableTreeNode(new OidNode(1, "ISO"));
        DefaultMutableTreeNode parent = top;
        nodes[0] = top;

        DefaultMutableTreeNode node = new DefaultMutableTreeNode(new OidNode(0, "standard"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(2, "member-body"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(3, "org"));
        parent.add(node);
        parent = node;
        nodes[1] = parent;

        node = new DefaultMutableTreeNode(new OidNode(6, "dod"));
        parent.add(node);
        parent = node;
        nodes[2] = parent;

        node = new DefaultMutableTreeNode(new OidNode(1, "internet"));
        parent.add(node);
        parent = node;
        nodes[3] = parent;

        node = new DefaultMutableTreeNode(new OidNode(1, "directory"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(2, "mgmt"));
        parent.add(node);
        nodes[4] = node;
        node.add(new DefaultMutableTreeNode(new OidNode(1, "mib-2")));
        node = new DefaultMutableTreeNode(new OidNode(3, "experimental"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(4, "private"));
        node.add(new DefaultMutableTreeNode(new OidNode(1, "enterprises")));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(5, "security"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(6, "snmpV2"));
        parent.add(node);
        node = new DefaultMutableTreeNode(new OidNode(7, "mail"));
        parent.add(node);

        m_model = new DefaultTreeModel(top);
        m_tree = new JTree(m_model);

        DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
        renderer.setOpenIcon(new ImageIcon("opened.gif"));
        renderer.setClosedIcon(new ImageIcon("closed.gif"));
        renderer.setLeafIcon(new ImageIcon("leaf.gif"));
        m_tree.setCellRenderer(renderer);

        m_tree.setShowsRootHandles(true);
        m_tree.setEditable(false);
        TreePath path = new TreePath(nodes);
        m_tree.setSelectionPath(path);

        m_tree.addTreeSelectionListener(new OidSelectionListener());

        JScrollPane s = new JScrollPane();
        s.getViewport().add(m_tree);
        getContentPane().add(s, BorderLayout.CENTER);

        m_display = new JTextField();
        m_display.setEditable(false);
        getContentPane().add(m_display, BorderLayout.SOUTH);

        WindowListener wndCloser = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        };
        addWindowListener(wndCloser);

        setVisible(true);
    }

    public static void main(String argv[]) {
        new Tree1();
    }

    class OidSelectionListener implements TreeSelectionListener {
        public void valueChanged(TreeSelectionEvent e) {
            TreePath path = e.getPath();
            Object[] nodes = path.getPath();
            String oid = "";
            for (int k = 0; k < nodes.length; k++) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodes[k];
                OidNode nd = (OidNode) node.getUserObject();
                oid += "." + nd.getId();
            }
            m_display.setText(oid);
        }
    }
}

class OidNode {
    protected int m_id;
    protected String m_name;

    public OidNode(int id, String name) {
        m_id = id;
        m_name = name;
    }

    public int getId() {
        return m_id;
    }

    public String getName() {
        return m_name;
    }

    public String toString() {
        return m_name;
    }
}