我有一个TableViewer,其中包含一个ICellModifier,看起来运行良好。 我在其中一个单元格编辑器上设置了一个ICellEditorValidator,但我无法使其按照我想要的方式工作。 这是我的简化代码:
cellEditors[1] = new TextCellEditor(table);
cellEditors[1].setValidator(new ICellEditorValidator() {
public String isValid(Object value) {
try {
Integer.parseInt((String) value);
return null;
} catch(NumberFormatException e) {
return "Not a valid integer";
}
}
});
大部分情况下都可以正常工作。不过,有两个问题:
- 如果验证程序返回错误,则单元格修改器的
modify
方法会接收到一个空值作为新值。我可以编写代码处理这个问题,但这似乎不是正确的方式。如果用户选择透明背景颜色,那么空值可能是有效值。(这是一个普遍性的问题,不是特定于此示例的问题。) - 验证程序的错误消息没有显示给用户。这是一个大问题。我也可以添加一个
ICellEditorListener
并从applyEditorValue
方法中显示对话框,如果最后一个值是无效的。这是正确的做法吗?
顺便说一句,由于某些原因,我被限制在Eclipse 3.0框架内。