Java:如何以编程方式选择和扩展JTree中的多个节点?
我有一个和一个.当我从中选择多个对象时,我希望所有选定的项目都显示在所选内容中。这意味着,例如,如果我选择了2个对象,则它们到root的路径都应该展开,并且每个选定的对象都应该选择其相应的对象。我的JTree有.JTree
awt.Canvas
Canvas
objList
JTree
TreeNode
TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION
以下是我使用的扩展功能的示例:
public void selectTreeNodes() {
HashMap <String, MyEntity> entities = ...;
Iterator it = entities.keySet().iterator();
while (it.hasNext()) {
String str = it.next().toString();
MyEntity ent = entities.get(str);
if (ent.isSelected()) {
DefaultMutableTreeNode searchNode = searchNode(ent.getName());
if (searchNode != null) {
TreeNode[] nodes = ((DefaultTreeModel) tree.getModel()).getPathToRoot(searchNode);
TreePath tpath = new TreePath(nodes);
tree.scrollPathToVisible(tpath);
tree.setSelectionPath(tpath);
}
}
}
}
public DefaultMutableTreeNode searchNode(String nodeStr)
{
DefaultMutableTreeNode node = null;
Enumeration enumeration= root.breadthFirstEnumeration();
while(enumeration.hasMoreElements()) {
node = (DefaultMutableTreeNode)enumeration.nextElement();
if(nodeStr.equals(node.getUserObject().toString())) {
return node;
}
}
//tree node with string node found return null
return null;
}
在我目前的状态下,如果我选择单个对象,它将在 中选择,并且将显示出来。但是如果选择了1个以上的对象,它将不显示任何内容,我的将保持不变。JTree
TreePath
entities
JTree