快速业务通道

了解Eclipse中的JFace数据绑定,第3部分: 使用高级功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
alse 则返回 No。现在,通过创建类 StringToBooleanConverter,创建相应的转换程序。交换转换源和转换目标的类型,并将 convert() 方法改为如果值为 Yes,则返回 true;如果值为 No 则返回 false。Java 5 自动装箱负责对象转换。

接下来,需要更改 UI。删除与复选框相关联的代码并将其替换为清单 14 中的代码。此清单还包含对 bindGUI() 方法的替换绑定方法调用。回想第 2 部分中,组合框小部件有一个选项属性可供绑定。绑定行还为 BindSpec 类使用了另一个构造函数,该类允许指定 BooleanToStringConverter 和 StringToBooleanConverter 的使用量。

清单 14. 用组合框替换复选框

gridData = new GridData(GridData.FILL_HORIZONTAL); this.comboIsMarried = new Combo(c, SWT.BORDER); this.comboIsMarried.setLayoutData(gridData); this.comboIsMarried.add("Yes"); this.comboIsMarried.add("No"); . . . ctx.bind(new Property(comboIsMarried, SWTProperties.SELECTION),      new Property(presentationModel,       "enableYearsMarried"),       new BindSpec(new BooleanToStringConverter(),       new StringToBooleanConverter(), null, null));

实现自定义验证程序

示例中的字段此刻都只获取字符串。但是,Years Married 字段应当限定为数字。实现限定的一种方法是使用自定义验证程序。创建一个名为 YearsMarriedValidator 的类并将清单 15 中的代码粘贴到其中。

清单 15. 自定义验证程序

public class YearsMarriedValidator implements IValidator {    public ValidationError isPartiallyValid(Object value) {      try {        Integer.valueOf((String) value);        return null;      } catch (NumberFormatException nfe) {        return new ValidationError(ValidationError.ERROR,        "Not A Number");      }    }    public ValidationError isValid(Object value) {      if ("5".equals(value)) {        return ValidationError.error("5 Is Not Allowed");      } else {        return null;      }    } }

了解Eclipse中的JFace数据绑定,第3部分: 使用高级功能(10)

时间:2011-02-11 IBM Scott Delap

这段代码将同时实现 isPartiallyValid() 和 isValid() 方法。对于 isPartiallyValid() 方法,将尝试把输入的字符串转换为一个整数。如果系统抛出了 NumberFormatException,则知道尝试失败。结果将返回 ValidationError。对于本示例,如果输入数字 5,则 isValid() 方法将返回一个 ValidationError。最后需要做的是将验证程序包含到 yearsMarriedTxt 字段的 BindSpec 中,如清单 16 所示。

清单 16. 绑定验证程序

ctx.bind(validationErrorLabel, binding.getValidationError(),      new BindSpec(new ValidationErrorToStringConverter(),          new ReadOnlyConverter(String.class,              ValidationError.class), null, null));

此时,打开修改后的示例,然后在组合框中选中 Yes 启用 Years Married 字段。尝试在 Years Married 字段中输入字符 abc。不会有任何变化,因为验证程序的部分验证检查将阻止输入数字。现在输入数字 1,然后尝试删除该数字。有趣的是,您会发现不能删除。因为并未编码让验证程序允许 null 或空字符串,因此不允许删除数字,因为这样做会导致产生无效的值。修改部分验证方法以

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号