我有一个JTree
和awt.Canvas
。 当我选择从内多个对象Canvas
到objList
,我想显示里面所有选定项目JTree
的选择。 这意味着,例如,如果我有选择的2个对象,既它们根路径应扩大,并且还每个选定的对象应具有其相应的TreeNode
选择。 我的JTree有TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION
。
这里是扩大funcion我使用的示例:
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;
}
在我目前的状态,如果我选择一个对象,它会在选定JTree
和它TreePath
将被显示。 但是,如果entities
有选择的,它会显示没有超过1个对象,我JTree
将保持不变。