
import javax.swing.*;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.*;


/**
 * @author Remi Forax
 *
 */
public class TreeExample {

  static class SimpleTreeModel implements TreeModel {

    public Object getRoot() {
      return "";
    }

    public int getChildCount(Object parent) {
      if (isLeaf(parent))
        return 0;
      else
        return 10;
    }

    public boolean isLeaf(Object node) {
      return node.toString().length()>2;
    }

    public Object getChild(Object parent, int index) {
      return parent.toString()+index;
    }

    public int getIndexOfChild(Object parent, Object child) {
      String text=child.toString();
      char lastCharacter=text.charAt(text.length()-1);
      return lastCharacter-'0';
    }

    public void valueForPathChanged(TreePath path, Object newValue) {
      throw new UnsupportedOperationException();
    }
    
    public void addTreeModelListener(TreeModelListener l) {
    }

    public void removeTreeModelListener(TreeModelListener l) {
    }
  }

  public static void main(String[] args) {
    TreeModel model=new SimpleTreeModel();
    JTree tree=new JTree(model);
    
    JFrame frame=new JFrame("TreeExample");
    frame.setContentPane(new JScrollPane(tree));
    frame.pack();
    frame.show();
  }
}
