gpt4 book ai didi

java - TableViewer 单元格编辑器不工作 - SWT

转载 作者:行者123 更新时间:2023-11-29 06:12:21 25 4
gpt4 key购买 nike

我正在尝试在 Eclipse SWT 中实现一个可编辑的表格查看器。我想到目前为止我所做的一切都很好,问题是表格不可编辑 - 如果我点击任何一行都没有任何反应。

我已经为我的所有专栏注册了一些 CellEditor:

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;
}

}
}

完成了所有这些,还有什么地方会出错呢?

提前致谢!

最佳答案

我发现了错误,似乎我忘记了设置列的属性。我补充说:

tableViewer.setColumnProperties(columnNames);

现在它工作正常,我可以编辑我的任何单元格!

关于java - TableViewer 单元格编辑器不工作 - SWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6363825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com