2012-08-31 124 views
2

如何將組合框添加到表中的特定列?
我想我的最後一欄有一個組合框3選擇(是,否,兩者)。 我將包含我的表格代碼,以便您更好地向我展示新代碼的工作方式。SWT - 表/組合框

////////////////////////////////////////////////////////////////////////// 
//       createTableViewer()       // 
////////////////////////////////////////////////////////////////////////// 
private TableViewer createTableViewer(Composite parent) { 
    viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 
    createColumns(parent, viewer); 
    Table table = viewer.getTable(); 
    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

    // Layout the viewer 
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); 
    viewer.setContentProvider(new ArrayContentProvider()); 
    viewer.setInput(AplotDataModel.getInstance().getArrayData()); 
    viewer.getControl().setLayoutData(gridData); 
    return viewer; 
} 

////////////////////////////////////////////////////////////////////////// 
//       createColumns()        // 
////////////////////////////////////////////////////////////////////////// 
private void createColumns(final Composite parent, final TableViewer viewer) { 
    String[] titles = { "ItemId", "RevId", "PRL", "Dataset Name", "EC Markup" }; 
    int[] bounds = { 150, 150, 100, 150, 100 }; 

    TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0); 
    col.setLabelProvider(new ColumnLabelProvider() { 
    @Override 
    public String getText(Object element) { 
     AplotDatasetData item = (AplotDatasetData) element; 
     return item.getDataset().toString(); 
    } 
    }); 

    col = createTableViewerColumn(titles[1], bounds[1], 1); 
    col.setLabelProvider(new ColumnLabelProvider() { 
    @Override 
    public String getText(Object element) { 
     AplotDatasetData item = (AplotDatasetData) element; 
     return item.getRev().toString(); 
    } 
    }); 

    col = createTableViewerColumn(titles[2], bounds[2], 2); 
    col.setLabelProvider(new ColumnLabelProvider() { 
    @Override 
    public String getText(Object element) { 
     AplotDatasetData item = (AplotDatasetData) element; 
     return item.getPRLValue(); 
    } 
    }); 

    col = createTableViewerColumn(titles[3], bounds[3], 3); 
    col.setLabelProvider(new ColumnLabelProvider() { 
    @Override 
    public String getText(Object element) { 
     AplotDatasetData item = (AplotDatasetData) element; 
     return item.getDatasetName(); 
    } 
    }); 

    col = createTableViewerColumn(titles[4], bounds[4], 4); 
    col.setLabelProvider(new ColumnLabelProvider() { 
    @Override 
    public String getText(Object element) { 
     AplotDatasetData item = (AplotDatasetData) element; 
     return item.getECMarkupValue(); 
    } 
    }); 
} 

////////////////////////////////////////////////////////////////////////// 
//      createTableViewerColumn()      // 
////////////////////////////////////////////////////////////////////////// 
private TableViewerColumn createTableViewerColumn(String title, int bound, final int colNumber) { 
    final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE); 
    final TableColumn column = viewerColumn.getColumn(); 
    column.setText(title); 
    column.setWidth(bound); 
    column.setResizable(true); 
    column.setMoveable(true); 
    return viewerColumn; 
} 

回答

6

有很好的例子herehere

兩者均使用ComboBoxViewerCellEditorEditingSupport內提供Combo框作爲表內編輯。