急tableViewer不能编辑,该如何解决
急急!tableViewer不能编辑
请高手看下哪里的问题编辑功能不能实现 ,tableViewer能实现,它的编辑功能不能实现
代码如下:
SelectView.java
createPartControl() 方法
public void createPartControl(Composite parent) {
this.tableViewer=new TableViewer(parent,SWT.MULTI|SWT.H_SCROLL|SWT.V_SCROLL|SWT.FULL_SELECTION);
final Table table=this.tableViewer.getTable();
//タイトルのうちの最初のデバイス
this.tableColumn=new TableColumn(table,SWT.LEFT);
this.tableColumn.setText("プロパティ");
this.tableColumn.setWidth(100);
//タイトルのうち2番目のデバイス
this.tableColumn2=new TableColumn(table,SWT.LEFT);
this.tableColumn2.setText("値");
this.tableColumn2.setWidth(100);
table.setHeaderVisible(true);
table.setLinesVisible(true);
//テーブルに値を追加します
final TableItem item1=new TableItem(table,SWT.NONE);
item1.setText(new String[]{"id:","TableView"});
final TableItem item2=new TableItem(table,SWT.NONE);
item2.setText(new String[]{"value:","com.nec.jst.SelectView"});
final TableItem item3=new TableItem(table,SWT.NONE);
item3.setText(new String[]{"action:","SelectAction"});
TableItem item4=new TableItem(table,SWT.NONE);
item4.setText(new String[]{"bean:","PeopleEntity"});
TableItem item5=new TableItem(table,SWT.NONE);
item5.setText(new String[]{"method:","no"});
TableItem item6=new TableItem(table,SWT.NONE);
item6.setText(new String[]{"validation:",null});
this.tableViewer.setColumnProperties(new String []{"property","value"}) ;
CellEditor[] editors = new CellEditor[2] ;
editors[0]=null;
editors[1] = new TextCellEditor(tableViewer.getTable()) ;
tableViewer.setCellEditors(editors) ;
ICellModifier modifier = new MyCellModifier(tableViewer) ;
tableViewer.setCellModifier(modifier) ;
}
MyCellModifier.java文件
package com.mountainminds.eclipse.selectionsample;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TableViewer;
public class MyCellModifier implements ICellModifier {
private TableViewer tv;
public MyCellModifier(TableViewer tableViewer) {
this.tv=tableViewer;
}
public boolean canModify(Object element, String property) {
if(property.equals("property")){
return false ;
}
return true;
}
public Object getValue(Object element, String property) {
Person p = (Person)element ;
if(property.equals("value")){
return new Integer(getNameIndex(p.getValue()));
}
throw new RuntimeException("error column name : " + property);
}
private int getNameIndex(Object name) {
for(int i=0;i <SelectionView.downColumn.length;i++){
if(SelectionView.downColumn[i].equals("value"))
return i;
}
return -1;
}
public void modify(Object element, String property, Object value) {
// TODO Auto-generated method stub
}
}
------解决方案--------------------
代码改完了,在另一个帖子里
请高手看下哪里的问题编辑功能不能实现 ,tableViewer能实现,它的编辑功能不能实现
代码如下:
SelectView.java
createPartControl() 方法
public void createPartControl(Composite parent) {
this.tableViewer=new TableViewer(parent,SWT.MULTI|SWT.H_SCROLL|SWT.V_SCROLL|SWT.FULL_SELECTION);
final Table table=this.tableViewer.getTable();
//タイトルのうちの最初のデバイス
this.tableColumn=new TableColumn(table,SWT.LEFT);
this.tableColumn.setText("プロパティ");
this.tableColumn.setWidth(100);
//タイトルのうち2番目のデバイス
this.tableColumn2=new TableColumn(table,SWT.LEFT);
this.tableColumn2.setText("値");
this.tableColumn2.setWidth(100);
table.setHeaderVisible(true);
table.setLinesVisible(true);
//テーブルに値を追加します
final TableItem item1=new TableItem(table,SWT.NONE);
item1.setText(new String[]{"id:","TableView"});
final TableItem item2=new TableItem(table,SWT.NONE);
item2.setText(new String[]{"value:","com.nec.jst.SelectView"});
final TableItem item3=new TableItem(table,SWT.NONE);
item3.setText(new String[]{"action:","SelectAction"});
TableItem item4=new TableItem(table,SWT.NONE);
item4.setText(new String[]{"bean:","PeopleEntity"});
TableItem item5=new TableItem(table,SWT.NONE);
item5.setText(new String[]{"method:","no"});
TableItem item6=new TableItem(table,SWT.NONE);
item6.setText(new String[]{"validation:",null});
this.tableViewer.setColumnProperties(new String []{"property","value"}) ;
CellEditor[] editors = new CellEditor[2] ;
editors[0]=null;
editors[1] = new TextCellEditor(tableViewer.getTable()) ;
tableViewer.setCellEditors(editors) ;
ICellModifier modifier = new MyCellModifier(tableViewer) ;
tableViewer.setCellModifier(modifier) ;
}
MyCellModifier.java文件
package com.mountainminds.eclipse.selectionsample;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TableViewer;
public class MyCellModifier implements ICellModifier {
private TableViewer tv;
public MyCellModifier(TableViewer tableViewer) {
this.tv=tableViewer;
}
public boolean canModify(Object element, String property) {
if(property.equals("property")){
return false ;
}
return true;
}
public Object getValue(Object element, String property) {
Person p = (Person)element ;
if(property.equals("value")){
return new Integer(getNameIndex(p.getValue()));
}
throw new RuntimeException("error column name : " + property);
}
private int getNameIndex(Object name) {
for(int i=0;i <SelectionView.downColumn.length;i++){
if(SelectionView.downColumn[i].equals("value"))
return i;
}
return -1;
}
public void modify(Object element, String property, Object value) {
// TODO Auto-generated method stub
}
}
------解决方案--------------------
代码改完了,在另一个帖子里