1、直接在tableviewer上编辑
int和Date类型列不能编辑
对象模型中
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
public void setAge(String age) {
propertyChangeSupport.firePropertyChange("age", this.age,
this.age= age);
}
public class AgeEditingSupport extends EditingSupport {
private final TableViewer viewer;
public PoDateEditingSupport(TableViewer viewer) {
super(viewer);
this.viewer = viewer;
}
@Override
protected CellEditor getCellEditor(Object element) {
return new TextCellEditor(viewer.getTable());
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected Object getValue(Object element) {
int age= ((Person)element).getAge( );
return String.valueof(age); //这里要返回String,不能为null
}
@Override
protected void setValue(Object element, Object value) {
((Indent) element).setAge(Integer.parseInt(value.toString()));
viewer.refresh();
}
}
View中
创建表格第一列
TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0);
//col.setLabelProvider(new StyledCellLabelProvider() {
col.setLabelProvider(new CellLabelProvider() {
@Override
public void update(ViewerCell cell) {
cell.setText(((Indent) cell.getElement()).getAge());
}
}); //标签
col.setEditingSupport(new AgeEditingSupport(viewer)); //编辑
参考:http://www.vogella.de/articles/EclipseJFaceTableAdvanced/article.html
http://topic.csdn.net/u/20111204/18/8e387254-8ce6-448e-a2a7-cf4f4b41e635.html?1432426362
2、如何设置TableViewer成为双击编辑