SWT - 表/组合框

时间:2012-08-31 18:01:04

标签: java swt

如何将组合框添加到表格中的特定列? 我希望我的最后一个专栏有一个包含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;
}

1 个答案:

答案 0 :(得分:6)

有很好的例子herehere

两者都使用ComboBoxViewerCellEditor中的EditingSupport来提供Combo框作为表内编辑。