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); } } }