tableViewer在表格上直接编辑数据
个表格的基本功能,但这并不够好,能否为表格实现一些更好的功能呢?答案是肯定的。下边我们来加入直接编辑的功能。
一、要实现这个功能必须提供一个实现ICellModifier的类
?使用如下:
private void createTableViewer(Composite parent) {viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL|SWT.FULL_SELECTION|SWT.BORDER);Table table=viewer.getTable();facadeTableViewer(table);TableLayout layout=new TableLayout();table.setLayout(layout);layout.addColumnData(new ColumnWeightData(50));viewer.setContentProvider(new ViewContentProvider());viewer.setLabelProvider(new ViewLabelProvider());viewer.setSorter(new PersonCompartor());viewer.setInput(InitData.init());//设置各列的属性的名称String[] columnProperties=new String[]{"stuNo","stuName","stuAge","stuSex","stuAddr"};viewer.setColumnProperties(columnProperties);//设置修改的编辑列CellEditor[] cellEditor = new CellEditor[5]; cellEditor[0] = null; cellEditor[1] = new ComboBoxCellEditor(table,PersonCellModifier.NAMES,SWT.READ_ONLY); //年龄需要验证数字 cellEditor[2] = new TextCellEditor(table); cellEditor[3] = new CheckboxCellEditor(table); cellEditor[4] = new TextCellEditor(table); viewer.setCellEditors(cellEditor);//设置修改器ICellModifier modifier=new PersonCellModifier(viewer);viewer.setCellModifier(modifier);//验证数字Text text = (Text)cellEditor[2].getControl();text.addVerifyListener(new VerifyListener(){public void verifyText(VerifyEvent e){String inStr = e.text;if (inStr.length() > 0){try{Integer.parseInt(inStr);e.doit = true;}catch(Exception ep){e.doit = false;}}}});}?