kleopatra ( ).
" " JTree node. node.
TreeNode selectedNode = tree.getSelectionPath().getLastPathComponent();
List<TreePath> paths = new ArrayList<TreePath>();
determineTreePaths(selectedNode, paths);
TreePath[] treePaths = new TreePath[paths.size()];
Iterator<TreePath> iter = paths.iterator();
for (int i = 0; iter.hasNext(); ++i)
{
treePaths[i] = iter.next();
}
if (paths.size() > 0)
{
TreePath firstElement = paths.get(0);
setSelectionPath(firstElement);
scrollPathToVisible(firstElement);
}
determineTreePaths(selectedNode, paths) node . ( ). , . , , .
:
private void determineTreePaths(TreeNode currentNode, List<TreePath> paths)
{
paths.add(new TreePath(((DefaultTreeModel) getDefaultTreeModel()).getPathToRoot(currentNode));
Enumeration<?> children = currentNode.children();
while (children.hasMoreElements())
{
TreeNode child = (TreeNode) children.nextElement();
determineTreePaths(child, paths);
}
}