Java JTree insert tree node in alphabetical order

Description

Java JTree insert tree node in alphabetical order

import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Enumeration;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class Main {
   public static void main(String args[]) {
      final JFrame f = new JFrame("JTree Demo");
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      Container c = f.getContentPane();
      c.setLayout(new FlowLayout());
      DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
      DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("X");
      DefaultMutableTreeNode c2 = new DefaultMutableTreeNode("B");
      DefaultMutableTreeNode c3 = new DefaultMutableTreeNode("C");
      root.add(c1);//from   w ww.j  a  v a  2s . c o  m
      root.add(c2);
      root.add(c3);

      c1.add(new DefaultMutableTreeNode("1"));
      c1.add(new DefaultMutableTreeNode("2"));

      c2.add(new DefaultMutableTreeNode("3"));
      c2.add(new DefaultMutableTreeNode("4"));

      c3.add(new DefaultMutableTreeNode("5"));
      DefaultMutableTreeNode n6 = new DefaultMutableTreeNode("6");

      c3.add(n6);

      JTree t = new JTree(root);

      insertNodeInAlphabeticalOrder(new DefaultMutableTreeNode("A"), root, (DefaultTreeModel) t.getModel());

      c.add(new JScrollPane(t));
      f.pack();
      f.setVisible(true);
   }

   public static void insertNodeInAlphabeticalOrder(DefaultMutableTreeNode childNode, DefaultMutableTreeNode parentNode,
         DefaultTreeModel model) {
      Enumeration<DefaultMutableTreeNode> children = parentNode.children();

      String nodeName = childNode.toString();
      int index = 0;

      if (children.hasMoreElements()) {
         while (children.hasMoreElements()) {
            String displayString = children.nextElement().toString();
            if (nodeName.compareToIgnoreCase(displayString) < 1) {
               break;
            }
            index++;
         }
         model.insertNodeInto(childNode, parentNode, index);
      } else {
         model.insertNodeInto(childNode, parentNode, 0);
      }
   }
}



PreviousNext

Related