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 に答える