JFace TableViewer获取多个选定的行

时间:2015-02-19 11:06:44

标签: jface tableviewer

enter image description here

我想在select列表中添加一个监听器,它可以在checklist tableviewer中选择多行。然后它会检查那些盒子。 我的问题是如何获取tableviewer中选择的行列表?

以下是表格的代码:

private void createCheckViewer(Composite parent){

    tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.MULTI| SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);


    if ( (GanttFrame.getListOfFunctionTasks()!= null)){

        if (!(GanttFrame.getListOfFunctionTasks().isEmpty())){

            // Data Rows
            for (int i = 0; i < GanttFrame.getListOfFunctionTasks().size(); i++) {
                tableViewer.add(GanttFrame.getListOfFunctionTasks().get(i));
                GanttFrame.getListOfFunctionTasks().get(i).setCheckId(i);
            } 
        }

    }

    // flow trace or function trace
    String columnHeader;

    if (TraceData.getFlowTraceFlag()){
        columnHeader = "Flow Traces";
    }else{
        columnHeader = "Function Traces";
    }

    // define layout for the viewer
    gridData = new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1);
    gridData.heightHint = 400;
    tableViewer.getControl().setLayoutData(gridData);

    tableViewer.addCheckStateListener(this.getCheckListListener());

    final Table table = tableViewer.getTable();

    TableLayout layout = new TableLayout();

    TableViewerColumn col = new TableViewerColumn(tableViewer, SWT.LEAD);
    col.getColumn().setText(columnHeader);
    layout.addColumnData(new ColumnWeightData(500));

    table.setLayout(layout);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
}

1 个答案:

答案 0 :(得分:3)

使用:

IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();

然后您有多种选择来处理选择:

Object [] selections = selection.toArray();

List<?> selections = selection.toList();

Iterator<?> iterator = selection.iterator();