Java 带复选框的TreeViewer

Java 带复选框的TreeViewer,java,eclipse-plugin,jface,Java,Eclipse Plugin,Jface,我目前正在创建一个树视图,其中叶元素应该是可检查的 我从eclipse插件创建了sampleTreeView,该插件带有预定义的树结构 public class TreeObject { private String name; private TreeParent parent; public TreeObject(String name) { this.name = name; } public String getName() {

我目前正在创建一个树视图,其中叶元素应该是可检查的

我从eclipse插件创建了sampleTreeView,该插件带有预定义的树结构

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;
   }
} 
公共类树对象{
私有字符串名称;
私人树状父母;
公共树对象(字符串名称){
this.name=名称;
}
公共字符串getName(){
返回名称;
}
public void setParent(树父级){
this.parent=parent;
}
公共树租金getParent(){
返回父母;
}
公共字符串toString(){
返回getName();
}
公共对象getAdapter(类密钥){
返回null;
}
}
公共类TreeParent扩展了TreeObject{
私人ArrayList儿童;
公共树租金(字符串名称){
超级(姓名);
children=newarraylist();
}
public void addChild(树对象子对象){
添加(child);
child.setParent(this);
}
public void removeChild(TreeObject子对象){
儿童。移除(儿童);
setParent(null);
}
public TreeObject[]getChildren(){
return(TreeObject[])children.toArray(newtreeobject[children.size()]);
}
公共布尔hasChildren(){
返回子项。size()>0;
}
} 

然后我发现了以下内容。他使用的是TreeItem对象,可以很容易地附加图像。我可以复制这个函数吗?或者我必须使用TreeItem对象作为我的数据结构吗?

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

标签提供程序的
getImage
方法将返回选中/未选中/空的图像


当需要更改图像时,如果对象的子对象也需要刷新,则调用
TreeViewer.update
TreeViewer.refresh
。这将再次调用标签提供程序。

可能重复@nashuald此问题是关于jface类TreeViewer的,而您指向的是来自swing的JTree。但是,一旦设置了初始映像,我如何调用标签提供程序?或者更确切地说,调用