如何在SWT中扩展TableView?

时间:2014-01-07 22:10:17

标签: java tree swt jface tableviewer

我做了

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(...

不幸的是,view只显示最顶层节点的成员。它不显示最顶层的节点本身。此外,不显示嵌套的子节点,即显示为无子节点的所有显示节点。

为什么呢?如何使TableView看起来像是可扩展节点的表格?

2 个答案:

答案 0 :(得分:0)

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

如果必须使用多个列(如表格)显示节点的信息,则可以使用org.eclipse.jface.viewers.TreeViewerColumn

答案 1 :(得分: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);