在tableviewer中创建Commbobox时出现AssertionFailedException

时间:2016-09-14 07:00:31

标签: swt jface tableviewer

我正在尝试在Eclipse SWT中的表查看器中创建一个组合框。向我指明正确的方向。我想我已经做好了一切,直到现在,问题是组合框没有显示在表中,我得到了错误:

错误: Error image 代码块是:

    public void createPartControl(Composite parent) {
    System.out.println("createPartControl call");

    // For Testing

    Composite tableComposite = new Composite(parent, SWT.NONE);
    tableColumnLayout = new TableColumnLayout();
    tableComposite.setLayout(tableColumnLayout);
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
            true));

    tableViewer = new TableViewer(tableComposite, SWT.MULTI | SWT.H_SCROLL
            | SWT.V_SCROLL);
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    // TODO viewer.setLabelProvider(new ViewLabelProvider());
    table = tableViewer.getTable();
    // Table table = tableViewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    String[] titles = { "Threat Name", "Category Name", "Status",
            "Priority", "Description", "Justification" };

    for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
        tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
        TableColumn tblclmn = tableViewerColumn.getColumn();
        tableColumnLayout.setColumnData(tblclmn, new ColumnPixelData(200,
                true, true));
        tblclmn.setText(titles[loopIndex]);
    }

}

   private void fillRows(String shortdesc, String categ, String descp) {
    System.out.println("fillRows call from above method.");     
    TableColumn status_Name_Col = tableViewer.getTable().getColumn(2);
    System.out.println("**************** status_Name_Col ************ "+ status_Name_Col);      
      tableViewerColumn.setLabelProvider(new ColumnLabelProvider()
        {
            @Override
            public String getText(Object element)
            {
                Dummy p = (Dummy) element;
                return p.getValue();
            }
        });
      tableViewer.addSelectionChangedListener(new ISelectionChangedListener()
        {
            @Override
            public void selectionChanged(SelectionChangedEvent selectionChangedEvent)
            {
                StructuredSelection selection = (StructuredSelection) selectionChangedEvent.getSelection();
                System.out.println(((Dummy) selection.getFirstElement()).getValue());
            }
        });


      List<Dummy> elements = new ArrayList<>();
      for (int i = 0; i < Connection.Number_Of_Connection; i++) {
            elements.add(new Dummy("First option"));
        }
      tableViewer.setInput(elements);
      tableColumnLayout.setColumnData(status_Name_Col, new ColumnWeightData(1, true));
      tableViewerColumn.setEditingSupport(new FirstValueEditingSupport(tableViewer));


}

1 个答案:

答案 0 :(得分:0)

断言消息非常清楚 - 您必须为表中的每一列设置标签提供程序。

您没有告诉我们您在哪里调用fillRows,但在该方法中设置列标签提供程序看起来是错误的 - 在循环中设置标签提供程序创建列。