1
콘텐츠 및 레이블 공급자가있는 TreeViewer가 있습니다. 입력을 설정하면 데이터가 표시되지 않고 빈 화면 만 표시됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?TreeViewer가 입력을 표시하지 않습니다.
아래 코드에서는 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);
제공자 : 당신은 TreeViewer
에 대한 잘못된 생성자를 사용하는
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;
}
}