快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
标签。最后,将标签更改为数字 4。两个错误标签都应当为空,因为未出现过任何验证错误。

图 8. 带有显示验证错误的 UI 示例

主-从关系的表

应用程序经常提供对象的汇总列表。选中一个列表后,详细信息就会显示在表单中。此类功能可以被编码到 JFace 数据绑定中,方法是使用一个集合小部件,例如 List 或 Table。然后可以将选中的值绑定到显示详细信息记录的目标表单上。

实现此功能的第一个步骤是创建另一个 Presentation Model 来保存要显示的表的列表。清单 19 显示了此功能的代码。这个 Presentation Model 还保存了一个 WritableValue 以保留表的选项状态。请再次注意,所有状态都被从 UI 表小部件中提取出来,并用 Presentation Model 来表示。

清单 19. TableForm 的 Presentation Model

public class TablePresentationModel extends PropertyChangeAware {    private List contacts;    private WritableValue selectedContact;    public TablePresentationModel(List contacts) {      this.contacts = contacts;      this.selectedContact = new WritableValue(Contact.class);      this.selectedContact.setValue(contacts.get(0));    }    public List getContacts() {      return contacts;    }    public void setContacts(List contacts) {      this.contacts = contacts;    }    public WritableValue getSelectedContactObservable() {      return selectedContact;    }    public void setSelectedContactObservable\    (WritableValue selectedContact) {      this.selectedContact = selectedContact;    } }

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

时间:2011-02-11 IBM Scott Delap

创建了 Presentation Model 之后,现在需要一个 UI。清单 20 显示了 TableForm 类的代码。

清单 20. TableForm 的实现

public class TableForm {    private TableViewer contactsTableViewer;    public TableForm(Composite c, TablePresentationModel presentationModel) {      createControls(c);      bindGUI(presentationModel);    }    private void bindGUI(TablePresentationModel presentationModel){      DataBindingContext ctx = createContext();      ctx.bind(new Property(this.contactsTableViewer, ViewersProperties.CONTENT), new TableModelDescription(new Property(presentationModel, "contacts", Contact.class, true), new String[] {"name", "spouse"}), null);      ctx.bind(new Property(this.contactsTableViewer, ViewersProperties.SINGLE_SELECTION), presentationModel.getSelectedContactObservable(), null);    }    private void createControls(Composite c) {      GridData gridData = new GridData(GridData.FILL_HORIZONTAL);      gridData.horizontalSpan = 2;      this.contactsTableViewer = new TableViewer(c, SWT.BORDER); this.contactsTableViewer.getTable().setLayoutData(gridData);    }    public static DataBindingContext createContext() {      DataBindingContext context = new DataBindingContext();      context.addObservableFactory(new   BeanObservableFactory(context, null,          new Class[] { Widget.class 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号