// TreeUsage.java - RJM Programming - October, 2014 // Based on http://www.codejava.net/java-se/swing/jtree-basic-tutorial-and-examples ... thanks import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultMutableTreeNode; import java.util.*; public class TreeUsage extends JFrame { private JTree tree; public TreeUsage() { DefaultMutableTreeNode root = null; DefaultMutableTreeNode parent1Node = null, parent2Node = null; DefaultMutableTreeNode grandparent1Node = null, grandparent2Node = null, grandparent3Node = null, grandparent4Node = null; DefaultMutableTreeNode greatgrandparent1Node = null, greatgrandparent2Node = null, greatgrandparent3Node = null, greatgrandparent4Node = null; DefaultMutableTreeNode greatgrandparent5Node = null, greatgrandparent6Node = null, greatgrandparent7Node = null, greatgrandparent8Node = null; DefaultMutableTreeNode greatgreatgrandparent1Node = null, greatgreatgrandparent2Node = null, greatgreatgrandparent3Node = null, greatgreatgrandparent4Node = null; DefaultMutableTreeNode greatgreatgrandparent5Node = null, greatgreatgrandparent6Node = null, greatgreatgrandparent7Node = null, greatgreatgrandparent8Node = null; DefaultMutableTreeNode greatgreatgrandparent9Node = null, greatgreatgrandparent10Node = null, greatgreatgrandparent11Node = null, greatgreatgrandparent12Node = null; DefaultMutableTreeNode greatgreatgrandparent13Node = null, greatgreatgrandparent14Node = null, greatgreatgrandparent15Node = null, greatgreatgrandparent16Node = null; String mode = "Enter Your Name: "; String yourName = "Root", lineageName = ""; int i = 1; while (yourName.trim().length() > 0) { yourName = JOptionPane.showInputDialog(mode); if (yourName.trim().length() > 0) { if (i == 1) { //create the root node root = new DefaultMutableTreeNode(yourName); //"Root"); lineageName = yourName; i *= 2; mode = "Enter " + yourName + " Parent Names (up to " + i + ") comma separated ... exits: "; } else if (i == 2) { String[] parentNames = yourName.split(","); parent1Node = new DefaultMutableTreeNode(parentNames[0]); parent2Node = new DefaultMutableTreeNode(parentNames[1]); i *= 2; mode = "Enter " + yourName + " Parent Names (up to " + i + ") comma separated ... exits: "; } else if (i == 4) { String[] grandparentNames = yourName.split(","); grandparent1Node = new DefaultMutableTreeNode(grandparentNames[0]); grandparent2Node = new DefaultMutableTreeNode(grandparentNames[1]); grandparent3Node = new DefaultMutableTreeNode(grandparentNames[2]); grandparent4Node = new DefaultMutableTreeNode(grandparentNames[3]); i *= 2; mode = "Enter " + yourName + " Parent Names (up to " + i + ") comma separated ... exits: "; } else if (i == 8) { String[] greatgrandparentNames = yourName.split(","); greatgrandparent1Node = new DefaultMutableTreeNode(greatgrandparentNames[0]); greatgrandparent2Node = new DefaultMutableTreeNode(greatgrandparentNames[1]); greatgrandparent3Node = new DefaultMutableTreeNode(greatgrandparentNames[2]); greatgrandparent4Node = new DefaultMutableTreeNode(greatgrandparentNames[3]); greatgrandparent5Node = new DefaultMutableTreeNode(greatgrandparentNames[4]); greatgrandparent6Node = new DefaultMutableTreeNode(greatgrandparentNames[5]); greatgrandparent7Node = new DefaultMutableTreeNode(greatgrandparentNames[6]); greatgrandparent8Node = new DefaultMutableTreeNode(greatgrandparentNames[7]); i *= 2; mode = "Enter " + yourName + " Parent Names (up to " + i + ") comma separated ... exits: "; } else if (i == 16) { String[] greatgreatgrandparentNames = yourName.split(","); greatgreatgrandparent1Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[0]); greatgreatgrandparent2Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[1]); greatgreatgrandparent3Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[2]); greatgreatgrandparent4Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[3]); greatgreatgrandparent5Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[4]); greatgreatgrandparent6Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[5]); greatgreatgrandparent7Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[6]); greatgreatgrandparent8Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[7]); greatgreatgrandparent9Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[8]); greatgreatgrandparent10Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[9]); greatgreatgrandparent11Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[10]); greatgreatgrandparent12Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[11]); greatgreatgrandparent13Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[12]); greatgreatgrandparent14Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[13]); greatgreatgrandparent15Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[14]); greatgreatgrandparent16Node = new DefaultMutableTreeNode(greatgreatgrandparentNames[15]); i *= 2; mode = "Enter " + yourName + " Parent Names (up to " + i + ") comma separated ... exits: "; yourName = ""; // okay ... that's it } } } // Add the child nodes i /= 2; while (i > 1) { if (i == 16) { greatgrandparent1Node.add(greatgreatgrandparent1Node); greatgrandparent1Node.add(greatgreatgrandparent2Node); greatgrandparent2Node.add(greatgreatgrandparent3Node); greatgrandparent2Node.add(greatgreatgrandparent4Node); greatgrandparent3Node.add(greatgreatgrandparent5Node); greatgrandparent3Node.add(greatgreatgrandparent6Node); greatgrandparent4Node.add(greatgreatgrandparent7Node); greatgrandparent4Node.add(greatgreatgrandparent8Node); greatgrandparent5Node.add(greatgreatgrandparent9Node); greatgrandparent5Node.add(greatgreatgrandparent10Node); greatgrandparent6Node.add(greatgreatgrandparent11Node); greatgrandparent6Node.add(greatgreatgrandparent12Node); greatgrandparent7Node.add(greatgreatgrandparent13Node); greatgrandparent7Node.add(greatgreatgrandparent14Node); greatgrandparent8Node.add(greatgreatgrandparent15Node); greatgrandparent8Node.add(greatgreatgrandparent16Node); } else if (i == 8) { grandparent1Node.add(greatgrandparent1Node); grandparent1Node.add(greatgrandparent2Node); grandparent2Node.add(greatgrandparent3Node); grandparent2Node.add(greatgrandparent4Node); grandparent3Node.add(greatgrandparent5Node); grandparent3Node.add(greatgrandparent6Node); grandparent4Node.add(greatgrandparent7Node); grandparent4Node.add(greatgrandparent8Node); } if (i == 4) { parent1Node.add(grandparent1Node); parent1Node.add(grandparent2Node); parent2Node.add(grandparent3Node); parent2Node.add(grandparent4Node); } else if (i == 2) { root.add(parent1Node); root.add(parent2Node); } i /= 2; } //create the tree by passing in the root node tree = new JTree(root); add(tree); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Lineage of " + lineageName); this.pack(); this.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new TreeUsage(); } }); } }