我有一个带有 ICellModifier 的 TableViewer,它似乎工作正常。不过,我在其中一个单元格编辑器上设置了 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
如果验证器返回错误,则单元格修饰符的方法接收 null 作为新值。我可以编写代码来处理这个问题,但这似乎不对。Null 可能是一个有效值,例如,如果用户选择背景颜色并且他们选择透明。(这是一个普遍问题,并非针对此示例。)- 验证器的错误消息永远不会显示给用户。这是个大问题。
applyEditorValue
如果最后一个值无效,我还可以添加一个 ICellEditorListener 并从该方法显示一个对话框 。这是“正确”的做法吗?
顺便说一句,由于我无法控制的原因,我仅限于 Eclipse 3.0 框架。