我想在Eclipse SWT中實現可編輯的表格查看器。我認爲我做了所有事情直到現在,問題是表格不可編輯 - 如果我點擊任何行,沒有任何反應。TableViewer單元格編輯器不工作 - SWT
我已經註冊了一些CellEditors用我所有的列:
CellEditor[] editors = new CellEditor[columnNames.length];
editors[0] = new TextCellEditor(table);
//do the above for all columns
tableViewer.setCellEditors(editors);
,然後我指定單元格修改爲我的表:
tableViewer.setCellModifier(new CellModifier(this));
的CellModifier類看起來是這樣的:
public class CellModifier implements ICellModifier{
private DBStructureView dbView;
public CellModifier(DBStructureView view){
super();
this.dbView = view;
}
@Override
public boolean canModify(Object element, String property) {
return true;
}
@Override
public Object getValue(Object element, String property) {
int columnIndex = dbView.getColumnNames().indexOf(property);
Object result = null;
AttributeNode node = (AttributeNode) element;
switch(columnIndex){
case 0://row id
result = node.getRow();
case 1://name
result = node.getName();
case 2://value
result = node.getValue();
default:
result = "unknown";
}
System.out.println(result);
return result;
}
@Override
public void modify(Object element, String property, Object value) {
int columnIndex = dbView.getColumnNames().indexOf(property);
TableItem item = (TableItem) element;
AttributeNode node = (AttributeNode)item.getData();
String valueString;
switch(columnIndex){
case 0:
valueString = ((String) value).trim();
node.setRow(valueString);
break;
case 1:
valueString = ((String) value).trim();
node.setName(valueString);
break;
case 2:
valueString = ((String) value).trim();
node.setValue(valueString);
break;
default:
break;
}
}
}
做完所有這些後,會出現什麼問題?
在此先感謝!
我看起來不像純SWT,你使用JFace ..? – Sorceror 2011-06-15 20:28:44
是的,不是簡單的SWT對不起 – AndaP 2011-06-16 07:31:08