TreeViewer 不显示输入
TreeViewer doesn't show input
我有一个带有内容和标签提供程序的 TreeViewer。当我设置输入时,数据没有显示,我只有一个空白视图。我做错了什么?
在下面的代码中,我展示了如何创建 TreeViwer 和提供程序。父项应该是字符串,子项是父项的子字符串(即字母)。
我如何创建 TreeViwer:
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);
提供商:
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;
}
}
您为 TreeViewer
使用了错误的构造函数。如果您已经有 Tree
,则必须使用:
TreeViewer treeViewer = new TreeViewer(tree);
(无样式标志)。
您正在使用的构造函数正在第一棵树中创建第二棵树 - 这不起作用。
我有一个带有内容和标签提供程序的 TreeViewer。当我设置输入时,数据没有显示,我只有一个空白视图。我做错了什么?
在下面的代码中,我展示了如何创建 TreeViwer 和提供程序。父项应该是字符串,子项是父项的子字符串(即字母)。
我如何创建 TreeViwer:
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);
提供商:
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;
}
}
您为 TreeViewer
使用了错误的构造函数。如果您已经有 Tree
,则必须使用:
TreeViewer treeViewer = new TreeViewer(tree);
(无样式标志)。
您正在使用的构造函数正在第一棵树中创建第二棵树 - 这不起作用。