1、新建一个swt-java项目,项目的名子为javatable。

2、建立一个shell窗口,窗口的名字为javatable。

3、在窗口中增加一个TableViewer。TableViewerColumn。

4、在table的数据建立一个实体类。public class jilu{ private String mingcheng=""; public String getmingcheng(){ return this.mingcheng; } public void setmingcheng(String mingcheng){ this.mingcheng=mingcheng; } }

5、新建一个标签类,把数据显示在table中。public class mcbiaoqian implements ITabl髫潋啜缅eLabelProvider { @Override public void addListener(ILabelProviderListener listener) { } @Override public void dispose() { } @Override public boolean isLabelProperty(Object element, String property) { return false; } @Override public void removeListener(ILabelProviderListener listener) { } @Override public Image getColumnImage(Object element, int columnIndex) { return null; } @Override public String getColumnText(Object element, int columnIndex) { if (element instanceof jilu){ jilu xx = (jilu)element; switch(columnIndex){ case 0: return xx.getmingcheng(); } } return null; } }

6、新建一个数据的容器类,读取一行数据。public class mcrongqi implements IStructuredContentProvider { public Object[] getElements(Object inputElement) { if(inputElement instanceof List){ return ((List<?>)inputElement).toArray(); }else{ return new Object[0]; } } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }

7、新建一个编辑类,允许在table中胆咣骜岱编辑数据。public class bjmingcheng implements ICellModifier{ @Override pu芟鲠阻缒blic boolean canModify(Object element, String property) { return true; } @Override public Object getValue(Object element, String property) { jilu wp=(jilu) element; switch(property){ case "mingcheng": return wp.getmingcheng(); } return null; } @Override public void modify(Object element, String property, Object value) { if(element==null){ return; } TableItem ti=(TableItem)element; jilu wp=(jilu)ti.getData(); switch(property){ case "mingcheng": wp.setmingcheng((String)value); break; } tv.update(wp, null); } }

8、新建一个窗口编辑的类,可以弹出窗口,在编辑的内容返回到table中显示,我没有新建一个窗口,我返回的是字符串。public class mcDialogCellEditor extends DialogCellEditor { public mcDialogCellEditor(Composite parent, int style){ super(parent,style); } @Override protected Object openDialogBox(Control cellEditorWindow) { return "插件 项目"; } }

9、把定义的类初始化:tv.setLabelProvider(new mcbiaoqian()); tv.setContentProvi颊俄岿髭der(new mcrongqi()); List<jilu> li=new ArrayList<jilu>(); li.add(new jilu()); li.add(new jilu()); tv.setInput(li); String[] lm={"mingcheng"}; tv.setColumnProperties(lm); tv.setCellModifier(new bjmingcheng()); CellEditor[] cell = new CellEditor[1]; cell[0]=new mcDialogCellEditor(table,SWT.BORDER); tv.setCellEditors(cell);

10、运行项目结果如下图。
