快速业务通道

了解Eclipse中的JFace数据绑定,第1部分: 数据绑定的优缺点 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
,名为 BeanAdapter,该对象用于创建值模型对象。值模型用于定义一种一般方法来访问 JavaBean 属性,而无需知道该属性名称的详细信息。清单 3 显示了 ValueModel 接口定义。

清单 3. ValueModel 接口

public interface ValueModel {    java.lang.Object getValue();    void setValue(java.lang.Object object);    void addValueChangeListener(PropertyChangeListener propertyChangeListener);    void removeValueChangeListener(PropertyChangeListener propertyChangeListener); }

BasicComponentFactory 类含有创建 Swing 组件的方法,这些组件将与提供的 ValueModel 绑定在一起。第二行将使用 BasicComponentFactory 来创建一个 JTextField。在这种情况下,JTextField 将与 FormBean 的 "first" 属性绑定在一起。JGoodies 数据绑定 API 将执行用来源于 FormBean 的数据对文本字段进行初始化操作的其余过程,它还将在文本字段中所作的所有更改都同步回 FormBean 中。

从域对象获取值导入模型中

整个同步执行过程仍可能好像是在变魔术一样虚幻。但是,事实并不如此。几乎所有流行的 GUI 组件的背后都有一个模型。数据绑定框架的任务是获取存储在域对象中的值再导入模型中。框架采用两种方法来执行这项任务。

了解Eclipse中的JFace数据绑定,第1部分: 数据绑定的优缺点(4)

时间:2011-02-11 IBM Scott Delap

调整 Bean 字段

一种方法是调整被绑定的 Bean 字段变为组件模型本身。使用这种方法,当组件的视图部分尝试检索或修改值时,它可直接转到 Bean 中的值。JGoodies 数据绑定框架在很多情况下都使用了这种方法。

图 1 显示了 JGoodies 怎样使用 DocumentAdapter 和 PropertyAdapter 类来装饰 Bean 以将其用于 JTextComponent 的模型。

图 1. JGoodies 调整字段用于 JTextComponent 模型

自动调用 getter 和 setter

将模型与 GUI 值同步的另一种方法是当一个值在另一端发生改变时自动调用关系两端的 getter 和 setter。JFace 数据绑定框架使用了这种技术以与 SWT 结合使用。

清单 4 显示了与前述相同的示例用 SWT 和 JFace 数据绑定重写后的结果。这个框架充当的是将字段联系在一起的上下文对象。请注意,这里使用了三个 context.bind() 方法调用,用于将文本控件与 FormBean 字段关联起来。

清单 4. 使用 JFace 数据绑定的同一个 Swing 对话框

import org.eclipse.jface.examples.databinding.nestedselection.BindingFactory; import org.eclipse.jface.internal.databinding.provisional.DataBindingContext; import org.eclipse.jface.internal.databinding.provisional.description.Property; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class JFaceBindingExample {    private Shell shell;    private FormBean bean;    public void run() {     Display display = new Display();     shell = new Shell(display);     GridLayout gridLayout = new GridLayout();     gridLayout.numColumns = 2;     shell.setLayout(gridLayout);     bean = new 

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