【问题标题】:TreeViewer with checkbox带复选框的 TreeViewer
【发布时间】:2013-12-02 22:22:08
【问题描述】:

我目前正在创建一个可以检查叶元素的 TreeView。

我从带有预定义树结构的 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;
   }
} 

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

【问题讨论】:

  • JTree with checkboxes的可能重复
  • @nashuald 这个问题是关于 jface 类 TreeViewer,而你指向的是来自 swing 的 JTree。

标签: java eclipse-plugin jface


【解决方案1】:

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

标签提供者的getImage 方法将返回选中/未选中/null 图像。

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

【讨论】:

猜你喜欢
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 2012-03-09
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多