2

如何将组合框添加到表中的特定列?
我希望我的最后一列有一个包含 3 个选项(是、否、两者)的组合框。我将包含我的表格代码,以便您更好地向我展示新代码的运行方式和方式。

  //////////////////////////////////////////////////////////////////////////
//                         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;
}
4

1 回答 1

6

这里这里都有很好的例子。

两者都ComboBoxViewerCellEditor在 中使用EditingSupport以将Combo框提供为表内编辑。

于 2012-08-31T19:13:36.657 回答