Eclipse 뷰에서 트리 및 테이블에 대해 동일한 컨텐트 및 레이블 공급자를 사용할 수 있는지 알고 싶거나 별도의 컨텐트 및 레이블 공급자가 있어야합니다. 난뿐만 아니라 테이블에 대한 나무에 대한 쓴 콘텐츠 및 레이블 공급자를 사용하려고하지만 테이블보기에 아무것도 볼 수 있습니다.Eclipse : 트리 뷰 및 테이블 뷰
감사합니다.
Eclipse 뷰에서 트리 및 테이블에 대해 동일한 컨텐트 및 레이블 공급자를 사용할 수 있는지 알고 싶거나 별도의 컨텐트 및 레이블 공급자가 있어야합니다. 난뿐만 아니라 테이블에 대한 나무에 대한 쓴 콘텐츠 및 레이블 공급자를 사용하려고하지만 테이블보기에 아무것도 볼 수 있습니다.Eclipse : 트리 뷰 및 테이블 뷰
감사합니다.
동일한 레이블 공급자를 사용할 수 있습니다.
트리 콘텐츠 공급자는 테이블 콘텐츠 공급자가 구현해야하는 IStructuredContentProvider 인터페이스와 "호환"되지 않는 ITreeContentProvider를 구현해야하므로 동일한 콘텐츠 공급자를 사용할 수 없습니다.
"호환 가능하지 않음"은 TreeContentProvider의 IStructuredContentProvider.getElements (Object inputElement) 메서드를 구현하면 "루트"개체 만 반환해야하지만 목록 콘텐츠 공급자의 모든 개체를 반환해야한다는 것을 의미합니다.
공급자를 공유 할 수 있습니다. ContentProvider는 IStructuredContentProvider와 ITreeContentProvider를 모두 구현해야합니다. 일반적으로 별도의 콘텐츠 제공 업체를 원할 것입니다.
예에서 트리에는 요소가있는 단 하나의 레벨 만 표시됩니다 (모든 요소는 뿌리입니다). 표에는 한 행만 표시됩니다.
예 : 귀하의 질문에 아래
//ContentProvider for Tree and Table
public static class CommonContentProvider extends ArrayContentProvider
implements ITreeContentProvider {
@Override
public Object[] getChildren(final Object arg0) {
return null;
}
@Override
public Object getParent(final Object arg0) {
return null;
}
@Override
public boolean hasChildren(final Object arg0) {
return false;
}
}
public static void testCommonProviderTreeTable(final Composite c) {
final Collection<String> input = Arrays.asList(new String[] { "hi",
"hola" });
final IContentProvider contentProvider = new CommonContentProvider();
final IBaseLabelProvider labelProvider = new LabelProvider() {
@Override
public String getText(final Object element) {
return element.toString();
}
};
final TreeViewer tree = new TreeViewer(c, SWT.NONE);
tree.setContentProvider(contentProvider);
tree.setLabelProvider(labelProvider);
tree.setInput(input);
final TableViewer table = new TableViewer(c, SWT.NONE);
table.setContentProvider(contentProvider);
table.setLabelProvider(labelProvider);
table.setInput(input);
}
뷰어가 삭제되면 해당 레이블 공급자의 dispose() 메서드가 호출됩니다. 예를 들어 DecoratingLabelProvider는이 메소드를 구현하여 이미지를 처 리합니다. 여러 명의 뷰어에서 동일한 LabelProvider 인스턴스를 다시 사용할 수는 없지만이 뷰어가 동시에 삭제되지는 않습니다. – ftl
대답인가? 그렇다면 답변을 수락하십시오. 그렇지 않다면 질문을 명확히하십시오. 감사합니다. –