This Java Swing tip illustrates a method of building and populating a tree. A Simple test to see how we can build a tree and populate it. This application also uses custom renderers and editors.

 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.util.*;

public class EmailTree extends JFrame {

  JTree tree;
  String[][] addresses = {
    {"This email address is being protected from spambots. You need JavaScript enabled to view it.", "This email address is being protected from spambots. You need JavaScript enabled to view it.", "This email address is being protected from spambots. You need JavaScript enabled to view it."},
    {"This email address is being protected from spambots. You need JavaScript enabled to view it."},
    {"This email address is being protected from spambots. You need JavaScript enabled to view it.", "This email address is being protected from spambots. You need JavaScript enabled to view it."},
    {"This email address is being protected from spambots. You need JavaScript enabled to view it."},
    {"This email address is being protected from spambots. You need JavaScript enabled to view it.", "This email address is being protected from spambots. You need JavaScript enabled to view it."},
    {"This email address is being protected from spambots. You need JavaScript enabled to view it."}
  };

  public EmailTree() {
    super("Hashtable Test");
    setSize(400, 300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);  // 1.3 & higher
    // addWindowListener(new BasicWindowMonitor());  // 1.1 & 1.2
  }

  public void init() {
    Hashtable h = new Hashtable();
    Hashtable paul = new Hashtable();
    paul.put("Work", addresses[0]);
    paul.put("Home", addresses[1]);
    Hashtable damian = new Hashtable();
    damian.put("Work", addresses[2]);
    damian.put("Pager", addresses[3]);
    damian.put("Home", addresses[4]);
    Hashtable angela = new Hashtable();
    angela.put("Home", addresses[5]);
    h.put("Paul", paul);
    h.put("Damian", damian);
    h.put("Angela", angela);
    tree = new JTree(h);

    DefaultTreeCellRenderer renderer = 
      (DefaultTreeCellRenderer)tree.getCellRenderer();
    renderer.setOpenIcon(new ImageIcon("mailboxdown.gif"));
    renderer.setClosedIcon(new ImageIcon("mailboxup.gif"));
    renderer.setLeafIcon(new ImageIcon("letter.gif"));
    EmailTreeCellEditor emailEditor = new EmailTreeCellEditor();
    DefaultTreeCellEditor editor = new DefaultTreeCellEditor(
      tree, renderer, emailEditor);
    tree.setCellEditor(editor);
    tree.setEditable(true);

    getContentPane().add(tree, BorderLayout.CENTER);
  }

  public static void main(String args[]) {
    EmailTree tt = new EmailTree();
    tt.init();
    tt.setVisible(true);
  }
}