eclipse mars 2
没有看之前的经验的话,看看经验链接,下面的讲解和之前经验联系在一起的。1、表的数据模型。2、标签类3、内容提供器4、table数据ArrayList<>不熟悉的看看之前的经验链接。
新建一个ICellModifier编辑类,读取table中的数据,更新table中的数据:public class Xinxibianji implements ICellModifier{ @Override public boolean canModify(Object element, String property) {//true :列可以修改//false :不能修改 return false; } @Override public Object getValue(Object element, String property) {读取tabled中的数据 return null; } @Override public void modify(Object element, String property, Object value) {把新的数据写到table中 } }
读取table中的数据getValue:Shangpinxinxi sp=(Shangpinxinxi) element;//一行数据 switch(property){ case 'fenlei': //列名 return sp.getfenlei(); case 'mingcheng': return sp.getmingcheng(); case 'zhujima': return sp.getzhujima(); case 'danwei': return sp.getdanwei(); case 'jiage': return Float.toString(sp.getjiage()); case 'hyjiage': return Float.toString(sp.gethyjiage()); } return null;
把新修改的数据保存在table中:TableItem ti=(TableItem)element; Shangpinxinxi sp=(Shangpinxinxi)ti.getData(); 一行数据 switch(property){ 把新数据写到数据模型中 case 'fenlei': sp.setfenlei((String)value); break; case 'mingcheng': sp.setmingcheng((String)value); break; case 'zhujima': sp.setzhujima((String)value); break; case 'danwei': sp.setdanwei((String)value); break; case 'jiage': sp.setjiage(Float.valueOf(value.toString())); break; case 'hyjiage': sp.sethyjiage(Float.valueOf(value.toString())); break; } tv.update(sp, null); 把新数据更新在table中
在createPartControl这个方法中定义列名:String[] lm={'fenlei','mingcheng','zhujima','danwei','jiage','hyjiage'}; tv.setColumnProperties(lm);
定义编辑器,多少列就定义几个:CellEditor[] cell = new CellEditor[6]; cell[0]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); cell[1]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); cell[2]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); cell[3]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); cell[4]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); cell[5]=new TextCellEditor(table,SWT.SINGLE | SWT.BORDER); tv.setCellEditors(cell);
设置table的编辑类:tv.setCellModifier(new Xinxibianji());
运行项目,发现数据不能编辑。
把canModify这个方法的返回值修改为true。
运行项目,table中的数据编辑了!