首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TreeViewer不显示输入

TreeViewer不显示输入
EN

Stack Overflow用户
提问于 2017-02-22 12:42:09
回答 1查看 210关注 0票数 1

我有一个带有内容和标签提供者的TreeViewer。当我设置输入时,数据不会显示,我只有一个空白视图。我做错了什么?

在下面的代码中,我展示了如何创建TreeViwer和提供程序。父应该是字符串,子元素是父字符串的子字符串(即字母)。

如何创建TreeViwer:

代码语言:javascript
复制
    Tree tree = new Tree(top, SWT.CHECK | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);

    tree.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));

    TreeViewer treeViewer = new TreeViewer(tree, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);

    treeViewer.setContentProvider(new TestContentProvider());
    treeViewer.setLabelProvider(new TestLabelProvider());

    List<String> input = new ArrayList<String>();

    input.add("abc");
    input.add("test");
    treeViewer.setInput(input);

提供者:

代码语言:javascript
复制
public class TestLabelProvider extends LabelProvider {

    @Override
    public String getText(Object element) {
        if (element instanceof String) {
            return ((String) element);
        }
        return "none";
    }
}




public class TestContentProvider implements ITreeContentProvider {

    private static final Object[] EMPTY_ARRAY = new Object[0];

    @Override
    public Object[] getElements(Object inputElement) {
        if (inputElement instanceof List) {
            return ((List<String>) inputElement).toArray();
        } else {
            return EMPTY_ARRAY;
        }
    }

    @Override
    public boolean hasChildren(Object element) {
        if (element instanceof String) {
            return true;
        }
        return false;
    }

    @Override
    public Object[] getChildren(Object parentElement) {
        if (parentElement instanceof String) {
            String s = (String) parentElement;
            return s.split("");
        }
        return EMPTY_ARRAY;
    }

    @Override
    public void dispose() {
    }

    @Override
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    }

    @Override
    public Object getParent(Object element) {
        return null;
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 12:54:17

您对TreeViewer使用了错误的构造函数。如果您已经有了一个Tree,则必须使用:

代码语言:javascript
复制
TreeViewer treeViewer = new TreeViewer(tree);

(没有样式标志)。

您使用的构造函数是在第一棵树内创建第二棵树--这是不起作用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42391821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档