快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
(firstText, "enabled"),   new Property(this.person, "firstEnabled"),   new BindSpec()); ctx.bind(labelFirst,   new Property(this.person, "first"),   new BindSpec()); ctx.bind(labelLast,   new Property(this.person, "last"),   new BindSpec());

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

时间:2011-02-11 IBM Scott Delap

新的绑定将导致示例的标签更改为与文本小部件相同的值。当单击 Change Name 时也会使第一个字段的小部件变为禁用状态。再次运行该示例,然后测试这项功能。

通过在 Last 字段中键入一些字符并按 Tab 键可以演示这些附加绑定的另一个有趣的结果。注意 Last 标签也发生了更改。JFace 数据绑定在焦点消失时将 Person Bean 的姓氏字段中的值与小部件进行了同步。由于标签被绑定到了此属性上,因此标签也被更新了。

绑定多个值

至此,您还只是将单个值绑定到小部件和小部件属性。在一个应用程序的 UI 中,很多时候都需要使用不止一个值。例如用户需要查看一组值,然后从中选择一个特定值。这通常是由列表或组合框来完成的。JFace 数据绑定考虑到了这种需求并提供了解决方案。

要创建一个绑定到多个值的示例,则需要一个要绑定的多个值的列表。此操作可通过将清单 15 中的代码复制到在本教程中不断增强的 Person Bean 中来完成。这段代码将创建一个名称的 ArrayList 以及相应的 getter。还有一种更简便的方法调用 —— addName() —— 该方法调用将获取 Person Bean 中的名字和姓氏,将名字和姓氏连接起来,然后把它们添加到列表中。

清单 15. 对 Person Bean 进行的修改

private List names; public Person(String first, String last) {      this.first = first;      this.last = last;      this.names = new ArrayList();      this.names.add("James Gosling");      this.names.add("Scott Delap");      this.names.add("Larry Wall"); } ... public List getAvailableNames() {      return this.names; } public void addName() {      this.names.add(getFirst() + " " + getLast());      firePropertyChange("availableNames", null, null); }

接下来,修改 BindingExample 类的代码,如清单 16 所示。将创建组合框和标签的代码以及绑定代码添加到 createControls() 方法中。然后在 createButtons() 方法中添加创建按钮的代码。

清单 16. 对 BindingExample 类进行的修改

private IObservableValue selectionHolder; private void createControls(Shell shell) {      ...      gridData = new GridData(GridData.FILL_HORIZONTAL);      gridData.horizontalSpan = 2;      Label comboSelectionLabel = new Label(shell, SWT.NONE);      comboSelectionLabel.setLayoutData(gridData);      gridData = new GridData(GridData.FILL_HORIZONTAL);      gridData.horizontalSpan = 2;      Combo combo = new Combo(shell, SWT.BORDER);      combo.setLayoutData(gridData);      DataBindingContext ctx = createContext();      ...      ctx.bind(         new Property(combo, SWTProperties.ITEMS),         new Property(             this.person,             "availableNames",  

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