TreeViewer与复选框

时间:2013-11-19 11:27:36

标签: java eclipse-plugin jface

我目前正在创建TreeView,其中叶子元素应该是可检查的。

我从eclipse插件创建了sampleTreeView,它带有预定义的Tree结构。

public class TreeObject {
    private String name;
    private TreeParent parent;

    public TreeObject(String name) {
       this.name = name;
     }
     public String getName() {
        return name;
     }
     public void setParent(TreeParent parent) {
         this.parent = parent;
     }
     public TreeParent getParent() {
        return parent;
     }
     public String toString() {
        return getName();
     }
     public Object getAdapter(Class<?> key) {
    return null;
    }
}


public class TreeParent  extends TreeObject{
     private ArrayList<TreeObject> children;
     public TreeParent(String name) {
        super(name);
         children = new ArrayList<TreeObject>();
     }
     public void addChild(TreeObject child) {
         children.add(child);
         child.setParent(this);
     }
     public void removeChild(TreeObject child) {
         children.remove(child);
         child.setParent(null);
   }
     public TreeObject [] getChildren() {
         return (TreeObject [])children.toArray(new TreeObject[children.size()]);
   }
      public boolean hasChildren() {
         return children.size()>0;
   }
} 

然后我找到了以下tutorial。他正在使用TreeItem对象,可以很容易地附加图像。我可以以某种方式复制此函数,还是必须使用TreeItem对象作为我的数据结构?

1 个答案:

答案 0 :(得分:0)

教程在第2部分的开头说,你应该为TreeViewer使用ContentProvider和LabelProvider,而不是使用TreeItem,这就是你应该做的。

标签提供程序的getImage方法将返回checked / unchecked / null图像。

如果对象的子项还需要刷新,则需要更改图像调用TreeViewer.updateTreeViewer.refresh。这将再次致电标签提供商。