快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
}));      context.addObservableFactory(new SWTObservableFactory());      context.addObservableFactory(new ViewersObservableFactory());      context.addBindSupportFactory(       new DefaultBindSupportFactory());      context.addBindingFactory(new DefaultBindingFactory());      context.addBindingFactory(new ViewersBindingFactory());      return context;    } }

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

时间:2011-02-11 IBM Scott Delap

类似于 ContactForm,TableForm 也创建一个 Presentation Model 并将其内容绑定到 UI 上。在本例中,小部件是一张表。bindGUI() 方法中的第一行将列表中的 Contact 对象从 Presentation Model 连接到表上。此处并没有使用绑定时提供的简单的 Property 对象,而是使用了 TableModelDescription 对象。此对象允许传递一个字符串数组以表示要将 Contact 对象的哪些属性绑定到表中的列上。方法中的第二个绑定行将把表中的选定值绑定到在 Presentation Model 中创建的 WritableValue 选项保存程序上。最后,注意类定义末尾的 createContext() 方法将把 ViewerObservableFactory 和 ViewersBindingFactory 添加到上下文中。没有这些工厂,上下文将不知道如何将数据与表绑定在一起。

这是一个很好的停止点来测试迄今为止的代码。用清单 21 中的代码修改示例运行程序。这段代码将创建一些示例联系人,并将这些信息传递给 Presentation Model,然后构建 TableForm。在运行程序上单击鼠标右键并以 SWT 应用程序来运行,将打开类似图 9 所示的窗口。

清单 21. 修改示例运行程序以尝试 TableForm

Contact contact = new Contact(); List contacts = new ArrayList(); contacts.add(new Contact("John Smith", "Jane Smith")); contacts.add(new Contact("John Smith2", "Jane Smith2")); contacts.add(new Contact("John Smith3", "Jane Smith3")); contacts.add(new Contact("John Smith4", "Jane Smith4")); TablePresentationModel tablePresentationModel = new TablePresentationModel(      contacts); TableForm tableForm = new TableForm(shell, tablePresentationModel); ContactPresentationModel presentationModel = new ContactPresentationModel(      contact); ContactForm contactForm = new ContactForm(shell, presentationModel); 图 9. 实现主-从关系的 UI 示例

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

时间:2011-02-11 IBM Scott Delap

引入 indirection

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

清单 22. 将 TablePresentation 模型与 ContactPresentationModel 连接起来

if (!getEnableYearsMarried()) {    Contact contact = (Contact) \    getContactObservable().getValue();    if (contact != 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号