【问题标题】:Treeviewer refresh no workingTreeviewer 刷新不起作用
【发布时间】:2018-04-27 17:01:23
【问题描述】:

在 TreeViewer 中添加元素后刷新 TreeViewer 不起作用,但在删除 TreeViewer 中的元素后刷新 TreeViewer 工作。 我的删除/删除动作是这样的,EntityElement 是树节点的基本类型:

public void run() {
                // TODO Auto-generated method stub
                IStructuredSelection selection = (IStructuredSelection) viewSite.getSelectionProvider().getSelection();
                Object firstElement = selection.getFirstElement();  
                if (firstElement instanceof EntityElement) {
                    EntityElement entityElement  = (EntityElement)firstElement;
                    entityElement.getParent().removeChildren(entityElement);
                    tv.refresh(entityElement.getParent(), false);
                }
            }

我的Add Action是这样的,object就是选中的树节点Object:

public void run() {
    // TODO Auto-generated method stub
    if (object instanceof EntityElement) {
            EntityElement demoElement = ((EntityElement) object).getChildren().get(0);
            ((EntityElement) object).getChildren().add(demoElement); //Add its first child by default
            Variable.treeViewer.refresh((EntityElement) object);
        }
    }
}

我想问为什么删除操作有效但添加操作无效?

【问题讨论】:

  • 您正在向object 添加一个已经在object 的子代中的子代。如果你是故意这样做的,我会感到惊讶。
  • @nitind 我不想要一个新的 EntityElement 对象。为方便起见,我只是再次添加了对象的第一个子节点,只是为了测试添加操作功能。

标签: eclipse-plugin eclipse-rcp treeviewer


【解决方案1】:

好的。这个问题已经解决了。当我新建 EntityElement 并添加它时,调用 refresh() TreeViewer 来刷新并显示新节点,我很好奇为什么

EntityElement demoElement = ((EntityElement) object).getChildren().get(0);
             ((EntityElement) object).getChildren().add(demoElement);

不工作???

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多