如何实现TreeViewer,使根元素具有多个单元格但子元素只有一个单元格?

时间:2013-12-22 20:19:23

标签: eclipse treeview swt jface

以下代码显示了如何使用列创建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宽度的单元组成。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

有一个代码段显示如何跨列

Table snippet: make text span multiple columns

同样赞同Greg的回答,您可以使用NatTable替代SWT TreeViewer。它还可以渲染树,并且比SWT TreeViewer

更具可配置性

答案 1 :(得分:1)

普通的TreeViewer列支持无法做到这一点。

您可以使用OwnerDrawLabelProvider来绘制行。

Eclipse Nebula项目有一些额外的网格和树控件,可以做你想要的。