2014-01-07 46 views
0

我制成如何使TableViewer在SWT中可扩展?

class ViewContentProvider implements IStructuredContentProvider 

提供分层数据,我也做了适当的

class ViewLabelProvider extends LabelProvider implements ITableLabelProvider 

然后写

public void createPartControl(Composite parent) { 
     viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL 
       | SWT.V_SCROLL); 
     viewer.setContentProvider(new ViewContentProvider()); 
     viewer.setLabelProvider(new ViewLabelProvider()); 
     // Provide the input to the ContentProvider 

     viewer.setInput(... 

不幸的是,视图显示仅最上面的节点的成员。它不显示最高节点本身。而且,不显示更多嵌套的子节点,即所有显示的节点都是无子节点。

为什么?如何使TableView看起来像被展开的节点一样随处可见?

+1

有你没有使用'TreeViewer'理由吗? – GGrec

+0

我也有一个关于'TreeViewer'的问题:如何让它有列? –

+1

只需使用http://help.eclipse.org/indigo/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/TreeViewerColumn.html –

回答

0

如果要显示具有父子关系的节点,则应该使用org.eclipse.jface.viewers.TreeViewer

如果节点的信息必须与多个列一样显示,那么您可以使用org.eclipse.jface.viewers.TreeViewerColumn

0

希望这有助于

Composite composite = new Composite(parent, SWT.NONE); 
    composite.setLayout(new BorderLayout(0, 0)); 

    Group grp = new Group(composite, SWT.NONE); 
    grp.setText(Messages.get().getValue("Some_text")); 
    grp.setLayout(new FillLayout(SWT.HORIZONTAL)); 

    tree = new Tree(grp, SWT.BORDER); 
    tree.setLinesVisible(true); 

    TreeColumn trclmnNewColumn = new TreeColumn(tree, SWT.NONE); 
    trclmnNewColumn.setWidth(100); 
    trclmnNewColumn.setText(Messages.get().getValue("Type")); 

    TreeColumn trclmnNewColumn_1 = new TreeColumn(tree, SWT.CENTER); 
    trclmnNewColumn_1.setWidth(60); 
    trclmnNewColumn_1.setText(Messages.get().getValue("Value")); 

    TreeItem treeItem = new TreeItem(tree, SWT.NONE); 
    treeItem.setText("Some Value"); 

    TreeItem trtm1 = new TreeItem(treeItem, SWT.NONE); 
    trtm1.setText("Some Value"); 

    TreeItem trtm2 = new TreeItem(treeItem, SWT.NONE); 
    trtm2.setText("Some Value"); 

    treeItem.setExpanded(true);