swt 如何在Table控件的单元格中添加一个下拉框,最好能给出一个小例子,谢谢!
最好给个例子
[解决办法]
看看这里啊 http://www.java2s.com/Tutorial/Java/0280__SWT/TableCellEditorComboTextandButton.htm
[解决办法]
楼主,我是没太多时间自己写,于是在eclipse官网上找到了个列子,如果有问题,请联系
/******************************************************************************* * Copyright (c) 2006, 2007 Tom Schindl and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Tom Schindl - initial API and implementation * Dinko Ivanov - bug 164365 *******************************************************************************/package org.eclipse.jface.snippets.viewers;import org.eclipse.jface.viewers.CellEditor;import org.eclipse.jface.viewers.ComboBoxCellEditor;import org.eclipse.jface.viewers.ICellModifier;import org.eclipse.jface.viewers.IStructuredContentProvider;import org.eclipse.jface.viewers.LabelProvider;import org.eclipse.jface.viewers.TableViewer;import org.eclipse.jface.viewers.Viewer;import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import org.eclipse.swt.widgets.TableItem;/** * This snippet represents usage of the ComboBoxCell-Editor * * @author Tom Schindl <tom.schindl@bestsolution.at> * */public class Snippet027ComboBoxCellEditors { private class MyCellModifier implements ICellModifier { private TableViewer viewer; public MyCellModifier(TableViewer viewer) { this.viewer = viewer; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, * java.lang.String) */ public boolean canModify(Object element, String property) { return true; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, * java.lang.String) */ public Object getValue(Object element, String property) { // We need to calculate back to the index return new Integer(((MyModel) element).counter / 10); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, * java.lang.String, java.lang.Object) */ public void modify(Object element, String property, Object value) { TableItem item = (TableItem) element; // We get the index and need to calculate the real value ((MyModel) item.getData()).counter = ((Integer) value).intValue() * 10; viewer.update(item.getData(), null); } } private class MyContentProvider implements IStructuredContentProvider { /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement) { return (MyModel[]) inputElement; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } } public class MyModel { public int counter; public MyModel(int counter) { this.counter = counter; } public String toString() { return "Item " + this.counter; } } public Snippet027ComboBoxCellEditors(Shell shell) { final Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION); final TableViewer v = new TableViewer(table); final MyCellModifier modifier = new MyCellModifier(v); TableColumn column = new TableColumn(table, SWT.NONE); column.setWidth(200); v.setLabelProvider(new LabelProvider()); v.setContentProvider(new MyContentProvider()); v.setCellModifier(modifier); v.setColumnProperties(new String[] { "column1" }); v.setCellEditors(new CellEditor[] { new ComboBoxCellEditor( v.getTable(), new String[] { "Zero", "Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }) }); MyModel[] model = createModel(); v.setInput(model); v.getTable().setLinesVisible(true); } private MyModel[] createModel() { MyModel[] elements = new MyModel[10]; for (int i = 0; i < 10; i++) { elements[i] = new MyModel(i * 10); } return elements; } /** * @param args */ public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); new Snippet027ComboBoxCellEditors(shell); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }}