JFace TableViewer 获取多个选中的行

JFace TableViewer get multiple selected rows

我想向 select 按钮添加一个侦听器,该按钮在清单 table 查看器中获取多行 selected。然后它会检查这些框。 我的问题是如何在 table 查看器中获取 selected 的行列表?

这是 table 的代码:

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);
}

使用:

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

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

Object [] selections = selection.toArray();

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

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