SWT – 表/combobox

如何将combobox添加到表格中的特定列?
我希望我的最后一个专栏有一个包含3个选项的combobox(是,否,两者)。 我将包含我的表格代码,这样您就可以更好地告诉我新代码是如何进行的。

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

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

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