eclipse中table控件怎么具有编辑功能
1、没有看之前的经验的话,看看经验链接,下面的讲解和之前经验联系在一起的。
1、表的数据模型。
2、标签类
3、内容提供器
4、table数据ArrayList<>
不熟悉的看看之前的经验链接。
2、新建一个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中
}
}
3、读取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;
4、把新修改的数据保存在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中
5、在createPartControl这个方法中定义列名:
String[] lm={"fenlei","mingcheng","zhujima","danwei","jiage","hyjiage"};
tv.setColumnProperties(lm);
6、定义编辑器,多少列就定义几个:
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);
7、设置table的编辑类:
tv.setCellModifier(new Xinxibianji());
8、运行项目,发现数据不能编辑。
9、把canModify这个方法的返回值修改为true。
10、运行项目,table中的数据编辑了!