Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(14/19)

 
前一页第 14 页,共 19 页后一页


对本教程的评价

帮助我们改进这些内容


引入 indirection

最后还需要做的是将选项从表挂接到 ContactPresentationModel 上以供查看。维基百科将计算机编程中的 indirection 定义为 “使用名称、引用或容器而不是值本身进行引用的能力”。通过绑定到稍后将填入的占位符上,可以将此方法与 ContactFormContactPresentationModel 结合使用。将其重构,以便 Contact 变量现在就替换 IObservable value。根据成为 contactObservable 的需要更改变量和方法名称。更改后会导致出现一些编译错误。修正 enablementChangeListener 并用清单 22 中的代码进行测试。



清单 22. 将 TablePresentation 模型与 ContactPresentationModel 连接起来
                    
if (!getEnableYearsMarried()) {
    Contact contact = (Contact) /
    getContactObservable().getValue();
    if (contact != null) {
        contact.setYearsMarried(null);
        contact.setSpouse(null);
    }
}

. . . 

ContactPresentationModel presentationModel = new 
ContactPresentationModel(
        new WritableValue(Contact.class));
presentationModel.getContactObservable().setValue(contact);

assertFalse(presentationModel.getEnableYearsMarried());

presentationModel.setEnableYearsMarried(true);
contact.setSpouse("spouse");
contact.setYearsMarried("5");
presentationModel.setEnableYearsMarried(false);

assertNull(contact.getSpouse());
assertNull(contact.getYearsMarried());

现在需要修正 ContactForm。确保先前的 getContact() 方法已被重构为 getContactObservable()。因为现在要绑定到 IObservableValue 而不是直接绑定到 Contact 对象,因此在绑定时必须更加明确这一点。修改 namespouseyearsMarriedProperty 对象构造函数以使第三个实参为 String.class,第四个实参为 false。这样做将指定将要绑定到的属性的类型和它不是集合的事实。最后,通过将 ContactForm 构造函数更改为从 TablePresentationModel 获取 WritableValue 实例,来修正示例运行程序中的错误。

再次运行示例。注意表的第一个值已被选中并且显示在下面的表单中。如果更改 Name 字段的值,则表中该字段的值也将更改。更改表中的选项将更改表单中显示的对象。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值