Java by API/javax.swing.tree/DefaultMutableTreeNode

Материал из Java эксперт
Перейти к: навигация, поиск

DefaultMutableTreeNode: add(MutableTreeNode newChild)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.ScrollPaneConstants; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; public class MainClass extends JPanel {

 public MainClass() {
   final JTree tree;
   final JTextField jtf;
   DefaultMutableTreeNode top = new DefaultMutableTreeNode("Options");
   DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
   top.add(a);
   DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
   a.add(a1);
   DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
   a.add(a2);
   DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
   top.add(b);
   DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
   b.add(b1);
   DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
   b.add(b2);
   DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("B3");
   b.add(b3);
   tree = new JTree(top);
   JScrollPane jsp = new JScrollPane(tree);
   add(jsp, BorderLayout.CENTER);
   jtf = new JTextField("", 20);
   add(jtf, BorderLayout.SOUTH);
   tree.addMouseListener(new MouseAdapter() {
     public void mouseClicked(MouseEvent me) {
       TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
       if (tp != null)
         jtf.setText(tp.toString());
       else
         jtf.setText("");
     }
   });
 }
 public static void main(String[] args) {
   JFrame frame = new JFrame();
   frame.getContentPane().add(new MainClass());
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(200, 200);
   frame.setVisible(true);
 }

}

      </source>
   
  
 
  



DefaultMutableTreeNode: breadthFirstEnumeration()

   <source lang="java">

import java.awt.BorderLayout; import java.util.Enumeration; import javax.swing.JFrame; 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.TreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; public class MainClass {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Traverse Tree");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTree tree = new JTree();
   tree.setRootVisible(true);
   TreeModel model = tree.getModel();
   Object rootObject = model.getRoot();
   if ((rootObject != null) && (rootObject instanceof DefaultMutableTreeNode)) {
     DefaultMutableTreeNode r = (DefaultMutableTreeNode) rootObject;
     printDescendents(r);
     Enumeration breadth = r.breadthFirstEnumeration();
     Enumeration depth = r.depthFirstEnumeration();
     Enumeration preOrder = r.preorderEnumeration();
     printEnumeration(breadth, "Breadth");
     printEnumeration(depth, "Depth");
     printEnumeration(preOrder, "Pre");
   }
   TreeSelectionListener treeSelectionListener = new TreeSelectionListener() {
     public void valueChanged(TreeSelectionEvent treeSelectionEvent) {
       JTree treeSource = (JTree) treeSelectionEvent.getSource();
       TreePath path = treeSource.getSelectionPath();
       System.out.println(path);
       System.out.println(path.getPath());
       System.out.println(path.getParentPath());
       System.out.println(((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject());
       System.out.println(path.getPathCount());
     }
   };
   tree.addTreeSelectionListener(treeSelectionListener);
   JScrollPane scrollPane = new JScrollPane(tree);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 400);
   frame.setVisible(true);
 }
 private static void printEnumeration(Enumeration e, String label) {
   System.out.println("-----" + label + "-----");
   while (e.hasMoreElements()) {
     System.out.println(e.nextElement());
   }
 }
 public static void printDescendents(TreeNode root) {
   System.out.println(root);
   Enumeration children = root.children();
   if (children != null) {
     while (children.hasMoreElements()) {
       printDescendents((TreeNode) children.nextElement());
     }
   }
 }

}

      </source>
   
  
 
  



DefaultMutableTreeNode: depthFirstEnumeration()

   <source lang="java">

import java.awt.BorderLayout; import java.util.Enumeration; import javax.swing.JFrame; 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.TreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; public class MainClass {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Traverse Tree");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTree tree = new JTree();
   tree.setRootVisible(true);
   TreeModel model = tree.getModel();
   Object rootObject = model.getRoot();
   if ((rootObject != null) && (rootObject instanceof DefaultMutableTreeNode)) {
     DefaultMutableTreeNode r = (DefaultMutableTreeNode) rootObject;
     printDescendents(r);
     Enumeration breadth = r.breadthFirstEnumeration();
     Enumeration depth = r.depthFirstEnumeration();
     Enumeration preOrder = r.preorderEnumeration();
     printEnumeration(breadth, "Breadth");
     printEnumeration(depth, "Depth");
     printEnumeration(preOrder, "Pre");
   }
   TreeSelectionListener treeSelectionListener = new TreeSelectionListener() {
     public void valueChanged(TreeSelectionEvent treeSelectionEvent) {
       JTree treeSource = (JTree) treeSelectionEvent.getSource();
       TreePath path = treeSource.getSelectionPath();
       System.out.println(path);
       System.out.println(path.getPath());
       System.out.println(path.getParentPath());
       System.out.println(((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject());
       System.out.println(path.getPathCount());
     }
   };
   tree.addTreeSelectionListener(treeSelectionListener);
   JScrollPane scrollPane = new JScrollPane(tree);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 400);
   frame.setVisible(true);
 }
 private static void printEnumeration(Enumeration e, String label) {
   System.out.println("-----" + label + "-----");
   while (e.hasMoreElements()) {
     System.out.println(e.nextElement());
   }
 }
 public static void printDescendents(TreeNode root) {
   System.out.println(root);
   Enumeration children = root.children();
   if (children != null) {
     while (children.hasMoreElements()) {
       printDescendents((TreeNode) children.nextElement());
     }
   }
 }

}

      </source>
   
  
 
  



DefaultMutableTreeNode: getUserObject()

   <source lang="java">

import java.awt.BorderLayout; import java.awt.ruponent; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.ToolTipManager; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("Tree Tips");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTree tree = new JTree(new String[]{"a","b","c"});
   ToolTipManager.sharedInstance().registerComponent(tree);
   TreeCellRenderer renderer = new ToolTipTreeCellRenderer();
   tree.setCellRenderer(renderer);
   JScrollPane scrollPane = new JScrollPane(tree);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

} class ToolTipTreeCellRenderer implements TreeCellRenderer {

 DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
 public ToolTipTreeCellRenderer() {
 }
 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,
     boolean expanded, boolean leaf, int row, boolean hasFocus) {
   Object tip = null;
   if (value != null) {
     
     if (value instanceof DefaultMutableTreeNode) {
       tip = ((DefaultMutableTreeNode) value).getUserObject();
     } else {
       tip = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
     }
     renderer.setToolTipText((String)tip);
   }
   renderer.setText((String)tip);
   return renderer;
 }

}

      </source>
   
  
 
  



DefaultMutableTreeNode: preorderEnumeration()

   <source lang="java">

import java.awt.BorderLayout; import java.util.Enumeration; import javax.swing.JFrame; 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.TreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; public class MainClass {

 public static void main(String args[]) {
   JFrame frame = new JFrame("Traverse Tree");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTree tree = new JTree();
   tree.setRootVisible(true);
   TreeModel model = tree.getModel();
   Object rootObject = model.getRoot();
   if ((rootObject != null) && (rootObject instanceof DefaultMutableTreeNode)) {
     DefaultMutableTreeNode r = (DefaultMutableTreeNode) rootObject;
     printDescendents(r);
     Enumeration breadth = r.breadthFirstEnumeration();
     Enumeration depth = r.depthFirstEnumeration();
     Enumeration preOrder = r.preorderEnumeration();
     printEnumeration(breadth, "Breadth");
     printEnumeration(depth, "Depth");
     printEnumeration(preOrder, "Pre");
   }
   TreeSelectionListener treeSelectionListener = new TreeSelectionListener() {
     public void valueChanged(TreeSelectionEvent treeSelectionEvent) {
       JTree treeSource = (JTree) treeSelectionEvent.getSource();
       TreePath path = treeSource.getSelectionPath();
       System.out.println(path);
       System.out.println(path.getPath());
       System.out.println(path.getParentPath());
       System.out.println(((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject());
       System.out.println(path.getPathCount());
     }
   };
   tree.addTreeSelectionListener(treeSelectionListener);
   JScrollPane scrollPane = new JScrollPane(tree);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 400);
   frame.setVisible(true);
 }
 private static void printEnumeration(Enumeration e, String label) {
   System.out.println("-----" + label + "-----");
   while (e.hasMoreElements()) {
     System.out.println(e.nextElement());
   }
 }
 public static void printDescendents(TreeNode root) {
   System.out.println(root);
   Enumeration children = root.children();
   if (children != null) {
     while (children.hasMoreElements()) {
       printDescendents((TreeNode) children.nextElement());
     }
   }
 }

}

      </source>
   
  
 
  



DefaultMutableTreeNode: setToolTipText(String text)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.ruponent; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.ToolTipManager; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("Tree Tips");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTree tree = new JTree(new String[]{"a","b","c"});
   ToolTipManager.sharedInstance().registerComponent(tree);
   TreeCellRenderer renderer = new ToolTipTreeCellRenderer();
   tree.setCellRenderer(renderer);
   JScrollPane scrollPane = new JScrollPane(tree);
   frame.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

} class ToolTipTreeCellRenderer implements TreeCellRenderer {

 DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
 public ToolTipTreeCellRenderer() {
 }
 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,
     boolean expanded, boolean leaf, int row, boolean hasFocus) {
   Object tip = null;
   if (value != null) {
     
     if (value instanceof DefaultMutableTreeNode) {
       tip = ((DefaultMutableTreeNode) value).getUserObject();
     } else {
       tip = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
     }
     renderer.setToolTipText((String)tip);
   }
   renderer.setText((String)tip);
   return renderer;
 }

}

      </source>
   
  
 
  



new DefaultMutableTreeNode(String text)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.ScrollPaneConstants; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; public class MainClass extends JPanel {

 public MainClass() {
   final JTree tree;
   final JTextField jtf;
   DefaultMutableTreeNode top = new DefaultMutableTreeNode("Options");
   DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
   top.add(a);
   DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
   a.add(a1);
   DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
   a.add(a2);
   DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
   top.add(b);
   DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
   b.add(b1);
   DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
   b.add(b2);
   DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("B3");
   b.add(b3);
   tree = new JTree(top);
   JScrollPane jsp = new JScrollPane(tree);
   add(jsp, BorderLayout.CENTER);
   jtf = new JTextField("", 20);
   add(jtf, BorderLayout.SOUTH);
   tree.addMouseListener(new MouseAdapter() {
     public void mouseClicked(MouseEvent me) {
       TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
       if (tp != null)
         jtf.setText(tp.toString());
       else
         jtf.setText("");
     }
   });
 }
 public static void main(String[] args) {
   JFrame frame = new JFrame();
   frame.getContentPane().add(new MainClass());
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setSize(200, 200);
   frame.setVisible(true);
 }

}

      </source>