Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Implements TreeModel

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Enumeration; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.WindowConstants; import javax.swing.event.TreeModelListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; public class UIDefaultsTreeModel implements TreeModel {   DefaultTreeModel innerModel;   DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("UIDefaults");   DefaultMutableTreeNode colorNode = new DefaultMutableTreeNode("Color Resources");   DefaultMutableTreeNode borderNode = new DefaultMutableTreeNode("Border Resources");   DefaultMutableTreeNode fontNode = new DefaultMutableTreeNode("Font Resources");   DefaultMutableTreeNode iconNode = new DefaultMutableTreeNode("Icon Resources");   DefaultMutableTreeNode otherNode = new DefaultMutableTreeNode("Other Resources");   public UIDefaultsTreeModel() {     innerModel = new DefaultTreeModel(rootNode);     innerModel.insertNodeInto(colorNode, rootNode, 0);     innerModel.insertNodeInto(borderNode, rootNode, 1);     innerModel.insertNodeInto(fontNode, rootNode, 2);     innerModel.insertNodeInto(iconNode, rootNode, 3);     innerModel.insertNodeInto(otherNode, rootNode, 4);     UIDefaults defaults = UIManager.getDefaults();     Enumeration elems = defaults.keys();     String keyName;     Object valueForKey;     while (elems.hasMoreElements()) {       DefaultMutableTreeNode newKeyNode;       DefaultMutableTreeNode newValueNode;       try {         keyName = elems.nextElement().toString();         valueForKey = defaults.get(keyName);         newKeyNode = new DefaultMutableTreeNode(keyName);         newValueNode = new DefaultMutableTreeNode(valueForKey);         if (valueForKey instanceof java.awt.Color) {           innerModel.insertNodeInto(newKeyNode, colorNode, 0);         } else if (valueForKey instanceof javax.swing.border.Border) {           innerModel.insertNodeInto(newKeyNode, borderNode, 0);         } else if (valueForKey instanceof java.awt.Font) {           innerModel.insertNodeInto(newKeyNode, fontNode, 0);         } else if (valueForKey instanceof javax.swing.Icon) {           innerModel.insertNodeInto(newKeyNode, iconNode, 0);         } else {           innerModel.insertNodeInto(newKeyNode, otherNode, 0);         }         innerModel.insertNodeInto(newValueNode, newKeyNode, 0);       } catch (NullPointerException e) {       }     }   }   public Object getRoot() {     return innerModel.getRoot();   }   public Object getChild(Object parm1, int parm2) {     return innerModel.getChild(parm1, parm2);   }   public int getChildCount(Object parm1) {     return innerModel.getChildCount(parm1);   }   public boolean isLeaf(Object parm1) {     return innerModel.isLeaf(parm1);   }   public void valueForPathChanged(TreePath parm1, Object parm2) {     innerModel.valueForPathChanged(parm1, parm2);   }   public int getIndexOfChild(Object parm1, Object parm2) {     return innerModel.getIndexOfChild(parm1, parm2);   }   public void addTreeModelListener(TreeModelListener parm1) {     innerModel.addTreeModelListener(parm1);   }   public void removeTreeModelListener(TreeModelListener parm1) {     innerModel.removeTreeModelListener(parm1);   }   public static void main(String[] args) {     JFrame treeFrame1 = new JFrame();     JScrollPane jScrollPane1 = new JScrollPane();     JTree jTree1 = new JTree(new UIDefaultsTreeModel());     treeFrame1.setSize(new Dimension(400, 300));     treeFrame1.addWindowListener(new WindowAdapter() {       public void windowClosed(WindowEvent e) {         System.exit(0);       }     });     treeFrame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);     treeFrame1.getContentPane().add(jScrollPane1, BorderLayout.CENTER);     jScrollPane1.getViewport().add(jTree1, null);     treeFrame1.setVisible(true);   } }