행운과 함께 여러 개의 열이있는 FilteredTree
을 만들려고합니다. TreeViewer
을 사용하면 열이 잘 작동하지만 FilteredTree
을 사용하여 전환 할 때 열을 제거하면 작동 할 수 있기 때문에 열이있는 FilteredTree
을 사용하는 방법이 있는지 궁금합니다.Eclipse의 열 및 필터링 된 트리
1
A
답변
1
확실히 FilteredTree를 열 뷰어와 함께 사용할 수 있습니다.
final TreeColumnLayout tl = new TreeColumnLayout();
PatternFilter patternFilter = new PatternFilter();
patternFilter.setIncludeLeadingWildcard(true);
FilteredTree ft = new FilteredTree(treeViewerComposite, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | toolkit.getBorderStyle() | Window.getDefaultOrientation(), patternFilter, true) {
@Override
protected Control createTreeControl(Composite parent, int style) {
Control c = super.createTreeControl(parent, style);
c.setLayoutData(null);
c.getParent().setLayout(tl);
return c;
}
};
viewer = ft.getViewer();
viewer.getTree().setHeaderVisible(true);
지금 방금 TREECOLUMN의 일반적인 방법을 만들 수 있습니다 당신의 열이 나타납니다 예를 들어 (이 또한 FilteredTree를 사용하여 TreeColumnLayout의 사용을 유지 보여줍니다).
1
normal Tree과 같은 방식으로 처리 할 수 있습니다. 다음은 전체 설정입니다.
PatternFilter patternFilter = new PatternFilter();
patternFilter.setIncludeLeadingWildcard(true);
filteredTree = new FilteredTree(getContainer(), SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL, patternFilter, true);
TreeViewer viewer = filteredTree.getViewer();
tree = viewer.getTree();
tree.setHeaderVisible(true);
TreeColumn modelColumn = new TreeColumn(tree, SWT.LEFT);
modelColumn.setText("Model");
modelColumn.setWidth(400);
TreeViewerColumn treeViewerModelColumn = new TreeViewerColumn(viewer, modelColumn);
treeViewerModelColumn.setLabelProvider(new ColumnLabelProvider());
0
예, 거기에 방법이며,이 솔루션은 여기에 설명되어 있습니다 : http://eclipsesource.com/blogs/2012/10/26/filtering-tables-in-swtjface/
요점은 기본 PatternFilter
나무 ILabelProvider
의 인스턴스가 나뭇잎 필요가있다. 열 기반 트리 뷰어에는 트리 리프에 대한 단일 텍스트 표현이 없습니다.
TreeViewerColumns
을 트리 열로 사용하는 경우 PatternFilter
은 각 열에 ColumnLabelProvider
을 사용합니다. 이 경우 당신은 PatternFilter
을 하위 클래스 수정하고 그것을 무시됩니다 자신의 isLeafMatch(..)
그렇지 않으면, 열을 정의하는 TreeColumns
를 사용하는 경우, TreeViewer
가 ITableLabelProvider
가 필요합니다. 이 외에도 PatternFilter
을 서브 클래스 화하고 다시 메서드를 재정의합니다. isLeafMatch(..)
불행히도이 코드는 어설 션 오류를 발생시킵니다. 이 방법으로 레이아웃 설정 코드가 올바르지 않습니다. – allprog