我目前正在创建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对象作为我的数据结构?
答案 0 :(得分:0)
教程在第2部分的开头说,你应该为TreeViewer
使用ContentProvider和LabelProvider,而不是使用TreeItem
,这就是你应该做的。
标签提供程序的getImage
方法将返回checked / unchecked / null图像。
如果对象的子项还需要刷新,则需要更改图像调用TreeViewer.update
或TreeViewer.refresh
。这将再次致电标签提供商。