快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
d setFirst(String first) {   Object oldVal = this.first;   this.first = first;   firePropertyChange("first", oldVal, this.first); } public String getLast() {   return last; } public void setLast(String last) {   Object oldVal = this.last;   this.last = last;   firePropertyChange("last", oldVal, this.last); }

PropertyChangeAware 类提供了标准的 JavaBean 属性更改支持。修改 setter 实现了当在 Person bean 中调用 setter 时对 PropertyChangeEvents 的触发功能。保存旧值,然后设定新值。最后,针对特定属性类型的两个值将触发一个属性更改事件。注意,使用的属性必须要遵循与 setter 方法相同的命名约定并且符合 JavaBean 规范。JFace 数据绑定提供的 JavaBeanObservable 可以侦听它所适配的对象的属性更改事件。这使它可以将特定的属性更改事件转换为更一般的 IObservableValue 更改事件。

这些更改完成后,删除 syncPersonToUI() 方法和在 Change Name 按钮侦听程序中对此方法的调用。同时,删除 createButtons() 方法中用于创建 Update Text From Person Bean 按钮的那段代码,因为不再需要此按钮。

启动 BindingExample 将显示类似图 11 所示的窗口。单击 Change Name 将导致文本小部件也发生变化。所有同步工作现在都由 JFace 数据绑定来完成。

图 11. 带属性更改支持的示例

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

时间:2011-02-11 IBM Scott Delap

由于您将不处理任何同步进程,因此也就不再需要两个私有的文本小部件变量了。createControls() 方法可被修改为使用本地变量,如清单 11 所示,因而完成初始示例的转换才能完全使用 JFace 数据绑定。

清单 11. 更改代码以使用本地变量

GridData gridData =   new GridData(GridData.FILL_HORIZONTAL); Text firstText = new Text(shell, SWT.BORDER); firstText.setLayoutData(gridData); label = new Label(shell, SWT.NONE); label.setText("Last:"); Text lastText =   new Text(shell, SWT.BORDER); gridData =   new GridData(GridData.FILL_HORIZONTAL); lastText.setLayoutData(gridData); DataBindingContext ctx = createContext(); ctx.bind(firstText,   new Property(this.person, "first"),   new BindSpec()); ctx.bind(lastText,   new Property(this.person, "last"),   new BindSpec());

绑定其他控件和属性

文本控件不是惟一可绑定的 SWT 小部件。所有的标准 SWT 小部件,例如组合框和标签,都可用于绑定。您还可以绑定不可视的小部件属性,例如 enabled。将清单 12 中的代码复制到 Person Bean 中。

清单 12. 向 Person Bean 中添加对启用的支持

private boolean firstEnabled = true; public boolean getFirstEnabled() {   return firstEnabled; } public void setFirstEnabled(boolean firstEnabled) {   Object oldVal = this.firstEnabled;   this.firstEnabled = firstEnabled;   firePropertyChange("firstEnabled", \   oldVal, this.firstEnabled); }

现在修改示例中的 updatePerson() 方法。

清单 13. 修改 updatePerson() 方法

private void updatePerson() {   person.setFirst("James");   person.setLast("Gosling");   person.setFirstEnabled(false); }

最后,将下面所示的绑定添加到 createControls() 方法的末尾。

清单 14. 将标签和启用绑定起来

ctx.bind(new Property

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