2014-01-23 31 views
2

我創建了一個TableViewer中(JFace的)。如何知道細胞在TableViewer的改變?

的所有列都是可編輯的(使用EditingSupport)

我想在小區改變認識,然後在另一列提高的標誌。這意味着你開始寫在細胞

任何數據我知道我需要創建關鍵的事件改變監聽到細胞中。 (或有不同的方式)

我怎麼能對小區的接入?我在哪裏需要添加事件

//該gridViewer類

public class MyGridViewer extends TableViewer { 
public MyGridViewer (Composite parent) { 
super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 

final Table table = this.getTable(); 
table.setHeaderVisible(true); 
table.setLinesVisible(true); 

this.setContentProvider(new MyModelProvider()); 

}}

@Override 
protected void inputChanged(Object input, Object oldInput) { 

removeColumn(); 



    tableCol = new TableViewerColumn(this, SWT.NONE); 
    column = tableCol.getColumn(); 
    column.setText(dataColumnHeader.getName()); 
    column.setWidth(100); 
    column.setResizable(true); 
    column.setMoveable(true); 
    tableCol.setLabelProvider(new ColumnLabelProvider() { 
     @Override 
     public String getText(Object element) { 
      DataRow r = (DataRow) element; 
      DataCell c = r.getDataCellByName(dataColumnHeader.getName()); 
      if (c != null && c.getValue() != null) { 
       return c.getValue().toString(); 
      } 
      return null; 
     } 
    }); 


editingSupport = new StringCellEditingSupport(this, dataColumnHeader); 
tableCol.setEditingSupport(editingSupport); 
    super.inputChanged(input, oldInput); 

}

回答

1

StringCellEditingSupport類知道當細胞發生變化,放您的代碼在該類的setValue方法中。