Find the path regardless of visibility that matches the specified sequence of names in Java

Description

The following code shows how to find the path regardless of visibility that matches the specified sequence of names.

Example


  /*w  w w .j ava  2  s  .c  om*/

import java.util.Enumeration;

import javax.swing.JTree;
import javax.swing.text.Position;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

public class Main {
  public static void main(String[] argv) throws Exception {
    JTree tree = new JTree();
    TreePath path = findByName(tree, new String[] { "JTree", "A", "a" });

  }

  public static TreePath findByName(JTree tree, String[] names) {
    TreeNode root = (TreeNode) tree.getModel().getRoot();
    return find(tree, new TreePath(root), names, 0);
  }

  private static TreePath find(JTree tree, TreePath parent, Object[] nodes, int depth) {
    TreeNode node = (TreeNode) parent.getLastPathComponent();
    Object o = node;

    if (o.equals(nodes[depth])) {
      if (depth == nodes.length - 1) {
        return parent;
      }
      if (node.getChildCount() >= 0) {
        for (Enumeration e = node.children(); e.hasMoreElements();) {
          TreeNode n = (TreeNode) e.nextElement();
          TreePath path = parent.pathByAddingChild(n);
          TreePath result = find(tree, path, nodes, depth + 1);
          if (result != null) {
            return result;
          }
        }
      }
    }
    return null;
  }
}




















Home »
  Java Tutorial »
    I/O »




Binary File
Byte Array
CharSet
Checksum
Console
Create Copy Move Delete
Directory
Drive
Encode Decode
File Attribute
File Lock
File System
GZIP
Jar File
NIO Buffer
Path
Scanner
StreamTokenizer
Temporary File
Text File
Zip