Pan*_*ian 10 java swing select treenode jtree
我有一个JTree和一个awt.Canvas.当我选择从内的多个对象Canvas进入objList,我想显示里面的所有选定项目JTree的选择.这意味着,例如,如果我选择了2个对象,则应扩展它们到root的路径,并且每个所选对象也应该TreeNode选择相应的对象.我的JTree有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;
}
Run Code Online (Sandbox Code Playgroud)
在我目前的状态,如果我选择一个对象,它会在选择JTree其TreePath将被显示.但如果entities选择了多个对象,它将不会显示任何内容,我JTree将保持不变.
Rob*_*bin 16
您正在寻找TreeSelectionModel的JTree(使用吸气剂).使用TreeSelectionModel#setSelectionPathsfor多个路径.现在,由于您的tree.setSelectionPath(tpath);通话,您只设置了一个节点.该TreeSelectionModel还的方法来添加/删除现有的选区,...(基本上所有你可能需要在未来).
一种有趣的扩展JTree#setExpandsSelectedPaths方法是允许配置JTree自动扩展所选路径的方法.如果要手动管理,可以使用该JTree#setExpandedState方法
| 归档时间: |
|
| 查看次数: |
25096 次 |
| 最近记录: |