如何在TreeViewer中扩展特定节点(org.eclipse.jface)

时间:2015-05-22 08:32:47

标签: eclipse treeview expand

我有一个jFace treeViewer。我想扩展一个特定的节点。我知道有一个函数ExpandToLevel(),但我不知道如何使用它,这个问题已经困扰了我好几天。

另外,我是一名中国学生,所以我的英语很差,但我希望问题很清楚。谢谢!

下面的代码,我不知道问题出在哪里,树根本没有扩展。

for (Object item :  ((ITreeContentProvider)fViewer.getContentProvider()).getElements(fViewer.getInput())) {
   for (Object contents : ((ITreeContentProvider) fViewer.getContentProvider()).getChildren(item)) {
                if (((ITreeContentProvider) fViewer.getContentProvider()).getChildren(contents) != null)
                    System.out.println("the content is :" +contents.toString());
                fViewer.expandToLevel(contents, AbstractTreeViewer.ALL_LEVELS);
        }   

以下代码是关于节点模型的:

package model;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class LocalFileDir {
    private String name;
    private List children;
    private String path;
    public LocalFileDir(String path, String name){
        this.name = name;
        this.path = path;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    public String getPath(){
         return path;
    }
    public void setChildren(List children) {
        this.children = children;
    }

    public List getChildren() {
        File file = new File(path);
        System.out.println("获取当前文件夹********************"+path);
        File[] fs = file.listFiles();
        children = new ArrayList();
        if(fs != null){
        for(File f : fs){
            if(f.exists()){             
                children.add(new LocalFileDir(path+"/"+f.getName(),            f.getName()));
        }
    }
    }
    return children;
}

}

1 个答案:

答案 0 :(得分:1)

TreeItem[] treeItems = viewer.getTree().getItems();
    for (TreeItem treeItem : treeItems) {
        viewer.expandToLevel(treeItem.getData(), TreeViewer.ALL_LEVELS);
    }

希望它能解决您的问题,您可以检查 foreach 循环中的条件