Java Code

/**
 * Adapted from:
 * Modified by: E.S. Boese
 * A 1.4 application 
 */
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

import java.awt.*;

public class JTreeEx extends JApplet
                  implements TreeSelectionListener {
    private JTree tree;

    //Optionally play with line styles.  Possible values are
    //"Angled" (the default), "Horizontal", and "None".
    private static boolean playWithLineStyle = true;
    private static String lineStyle = "Angled";
    
    public void init() 
    {
        resize( 500, 270 );
        //Create the nodes.
        DefaultMutableTreeNode top =
            new DefaultMutableTreeNode("Liz's Playground");
        createNodes(top);

        //Create a tree that allows one selection at a time.
        tree = new JTree(top);
        tree.getSelectionModel().setSelectionMode
                (TreeSelectionModel.SINGLE_TREE_SELECTION);

        //Listen for when the selection changes.
        tree.addTreeSelectionListener(this);

        if (playWithLineStyle) {
            System.out.println("line style = " + lineStyle);
            tree.putClientProperty("JTree.lineStyle", lineStyle);
        }

        //Create the scroll pane and add the tree to it. 
        JScrollPane treeView = new JScrollPane(tree);
	treeView.setPreferredSize(new Dimension(450, 250));

        initHelp();

        //Add the tree to this panel.
        add(treeView);
    }

    /** Required by TreeSelectionListener interface. */
    public void valueChanged(TreeSelectionEvent e) 
    {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                       tree.getLastSelectedPathComponent();
        if (node == null) 
		return;

        Object nodeInfo = node.getUserObject();
        if (node.isLeaf()) 
	{
            BookInfo book = (BookInfo)nodeInfo;
        } 
    }

    private class BookInfo 
    {
        public String bookName;

        public BookInfo(String book ) 
	{
            bookName = book;
        }
        public String toString() {
            return bookName;
        }
    }

    private void initHelp() {
        String s = "TreeDemoHelp.html";
    }


    private void createNodes(DefaultMutableTreeNode top) {
        DefaultMutableTreeNode category = null;
        DefaultMutableTreeNode book = null;

        category = new DefaultMutableTreeNode("Java Books");
        top.add(category);

        // java book
        book = new DefaultMutableTreeNode(new BookInfo ("programming.java" ));
        category.add(book);

	// JLS
        book = new DefaultMutableTreeNode(
		new BookInfo( "The Java Language Specification"));
        category.add(book);

        //Bloch
        book = new DefaultMutableTreeNode(new BookInfo
            ("Effective Java Programming Language Guide"));
        category.add(book);

        //Arnold/Gosling
        book = new DefaultMutableTreeNode(new BookInfo
            ("The Java Programming Language")); 
        category.add(book);

        //Chan
        book = new DefaultMutableTreeNode(new BookInfo
            ("The Java Developers Almanac"));
        category.add(book);

	// SECOND MAIN CATEGORY
        category = new DefaultMutableTreeNode("Fun Books");
        top.add(category);

        // enlightenment
        book = new DefaultMutableTreeNode(new BookInfo("enlightenment" ) );
        category.add(book);

        // hitchiker's guid
        book = new DefaultMutableTreeNode(
		new BookInfo( "Hitchhiker's Guide To the Universe") );
        category.add(book);
    }
}