Mega Code Archive

 
Categories / Java / Swing JFC
 

Displaying Hierarchical Data within a JTree

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; public class TreeIt {   class MyCellRenderer extends JLabel implements TreeCellRenderer {     MyCellRenderer() {       setOpaque(true);     }     public Component getTreeCellRendererComponent(JTree tree, Object value,         boolean selected, boolean expanded, boolean leaf, int row,         boolean hasFocus) {       StringBuffer text = new StringBuffer();       if (expanded)         text.append("E:");       if (leaf)         text.append("L:");       if (hasFocus)         text.append("H:");       text.append(row + "->");       text.append(value.toString());       setBackground(selected ? Color.BLUE : Color.YELLOW);       setForeground(selected ? Color.YELLOW : Color.BLUE);       setText(text.toString());       return this;     }   }   public TreeIt() {     JFrame f = new JFrame();     DefaultMutableTreeNode root = new DefaultMutableTreeNode("Calendar");     DefaultMutableTreeNode months = new DefaultMutableTreeNode("Months");     root.add(months);     String monthLabels[] = { "January", "February", "March", "April",         "May", "June", "July", "August", "September", "October",         "November", "December" };     for (int i = 0, n = monthLabels.length; i < n; i++)       months.add(new DefaultMutableTreeNode(monthLabels[i]));     DefaultMutableTreeNode weeks = new DefaultMutableTreeNode("Weeks");     root.add(weeks);     String weekLabels[] = { "Monday", "Tuesday", "Wednesday", "Thursday",         "Friday", "Saturday", "Sunday" };     for (int i = 0, n = weekLabels.length; i < n; i++)       weeks.add(new DefaultMutableTreeNode(weekLabels[i]));     JTree jt = new JTree(root);     jt.addTreeSelectionListener(new TreeSelectionListener() {       public void valueChanged(TreeSelectionEvent e) {         TreePath path = e.getPath();         System.out.println("Picked: " + path.getLastPathComponent());         Object elements[] = path.getPath();         for (int i = 0, n = elements.length; i < n; i++) {           System.out.print("->" + elements[i]);         }         System.out.println();       }     });     DefaultMutableTreeNode lastLeaf = root.getLastLeaf();     TreePath path = new TreePath(lastLeaf.getPath());     jt.setSelectionPath(path);     jt.setCellRenderer(new MyCellRenderer());     JScrollPane jsp = new JScrollPane(jt);     Container c = f.getContentPane();     c.add(jsp, BorderLayout.CENTER);     f.setSize(250, 250);     f.show();   }   public static void main(String args[]) {     new TreeIt();   } }