快速业务通道

了解Eclipse中的JFace数据绑定,第2部分: 绑定的基础知识 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
te final Combo combo; ...      public void add(int index, Object element) {         int size = doGetSize();         if (index < 0 || index > size)             index = size;         String[] newItems = new String[size + 1];         System.arraycopy(getItems(), 0, newItems, 0, index);         newItems[index] = (String) element;         System.arraycopy(    getItems(),    index,    newItems,    index + 1,    size - index);         setItems(newItems);         fireListChange(Diffs.createListDiff(Diffs.createListDiffEntry(index,                true, element)));      }      protected int getItemCount() {         return combo.getItemCount();      }      ... }

了解Eclipse中的JFace数据绑定,第2部分: 绑定的基础知识(15)

时间:2011-02-11 IBM Scott Delap

列表中的奥秘:ListBinding

选项 observable 是使用 ValueBinding 对象保持同步的,在前面已经详细介绍过了。

这样做导致了值列表仍需要同步。这项任务由 ListBinding 类来承担;清单 21 中显示了代码片段。

这个实现迭代任何指定的 difference,在目标 IObservableList 实例调用相应的 add() 或 remove() 方法。

清单 21. ListBinding 的代码片段

private IListChangeListener modelChangeListener =   new IListChangeListener() {             public void handleListChange(    IObservableList source,    ListDiff diff) {                ...                ListDiff setDiff = (ListDiff) e.diff;      ListDiffEntry[] differences =    setDiff.getDifferences();                for (int i = 0; i < differences.length; i++) {                    ListDiffEntry entry = differences[i];                    if (entry.isAddition()) {                       targetList.add(        entry.getPosition(),        entry.getElement());                    } else {                       targetList.remove(entry.getPosition());                    }                }             ...      } };

列表里的奥秘:作为整体来看

现在来总结一下,清单 16 中的 ctx.bind(new Property(combo, SWTProperties.ITEMS 代码行告诉绑定上下文将组合框的项属性绑定到在 Person Bean 上调用 availableNames getter 返回的值的 List。上下文将因存在绑定关系而为两者创建 IObservableList 实现。然后它将创建 ListBinding 引用 IObservableList 的实例,以使两者在一方发生更改时保持同步。

结束语

本教程介绍了 JFace 数据绑定 API 中的一些核心功能。同时,您也看到了数据绑定是如何将您从编写乏味的样本同步代码(桌面应用程序所必需)的痛苦中解脱出来的。JFace 数据绑定 API 提供了一组接口和实现以引用 JavaBean 的属性和 SWT/JFace 小部件的属性。

有了这种机制,它可以提供支持同步的小部件,例如文本控件和标签以及多值列表和组合框。您可以通过 DataBindingContext.bind()(提供关系的目标和模型)将这些属性绑定在一起。

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