2013-12-22 1 views
0

Следующий код показывает, как создать TreeViewer с колонками.Как реализовать TreeViewer таким образом, чтобы корневые элементы имели несколько ячеек, но дочерние элементы - только одна ячейка?

TreeViewer treeViewer = new TreeViewer(shell, SWT.BORDER); 
Tree tree = treeViewer.getTree(); 
tree.setHeaderVisible(true); 
tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); 

TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); 
TreeColumn trclmnNewColumn = treeViewerColumn.getColumn(); 
trclmnNewColumn.setWidth(100); 
trclmnNewColumn.setText("New Column"); 

TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.NONE); 
TreeColumn trclmnNewColumn_1 = treeViewerColumn_1.getColumn(); 
trclmnNewColumn_1.setWidth(100); 
trclmnNewColumn_1.setText("New Column"); 

По умолчанию, если развернуть корневой элемент строки, появляются дочерний элемент строки, а так же, как строки корневого элемента, они также делятся на ячейки по столбцам.

Я хотел бы реализовать TreeViewer, так что дочерние элементы, в отличие от корневых элементов, состоят из одной ячейки, которая охватывает ширину TreeViewer.

Как это можно сделать?

ответ

1

Существует один фрагмент кода, который показывает, как охватить столбцы

Table snippet: make text span multiple columns

Также согласен с ответом Грега, вы можете использовать NatTable в качестве альтернативы SWT TreeViewer. Он также может отображать дерево и более настраиваемый, чем SWT TreeViewer

1

Это невозможно с обычной опорой колонки TreeViewer.

Возможно, вы можете сделать это, используя OwnerDrawLabelProvider, где вы должны нарисовать строки.

В проекте Eclipse Nebula есть дополнительные элементы управления сеткой и деревом, которые могут делать то, что вы хотите.

Смежные вопросы