BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JSR 295规范参考实现Beans Binding推出1.0版

| 作者 Scott Delap 关注 0 他的粉丝 ,译者 Jason lai 关注 0 他的粉丝 发布于 2007年9月25日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Sun公司的Shannon Hickey最近刚刚宣布了Beans Binding框架的1.0版本。该框架是JSR 295规范的参考实现,它试图:

[……]定义一套API,使得一对Java Beans属性之间的连接得到大幅度的简化,并保持属性的同步。属性的连接是可配置的:在更新属性之前,可以进行类型转换和值校验操作。

Shannon表示,针对该JSR的工作仍将继续进行,而且可能导致API发生变化。不过,框架的1.0版确实通过以下的显著特性代表了对Beans Binding API架构的一个主要的重新实现:

  • 属性的概念已经被抽取出来,成为一个抽象的Property类,并且提供了两个有趣的具体实现:BeanPropertyELProperty
  • Binding目前已经成为一个表示两个Property实例之间绑定关系的抽象类(通常关联着两个对象)。
  • 使用自动同步的绑定则通过一个新的AutoBinding子类实现出来。
  • 对复杂Swing组件(例如JTableJListJComboBox)的绑定现在由定制的Binding子类处理。
  • 提供多种可能行为的合成型(synthetic)Swing属性现在是通过属性的多个版本的方式来向外暴露。例如:用于JTextField的“text”、“text_ON_FOCUS_LOST”和“text_ON_ACTION_OR_FOCUS_LOST”;用于JListJTable的“selectedElement”和“selectedElement_IGNORE_ADJUSTING”。
  • 所有的代码都被重新打包,放到org.jdesktop之下。

用于该框架的基本API如下所示:

// Bind Duke's first name to the text property of a Swing JTextField
BeanProperty textP = BeanProperty.create("text");
Binding binding =
Bindings.createAutoBinding(READ_WRITE, duke, firstP, textfield, textP);
binding.bind();

// Bind Duke's mother's first name to the text property of a Swing JTextField,
// specifying that the JTextField's text property only reports change
// (thereby updating the source of the READ_WRITE binding) on focus lost
BeanProperty textP = BeanProperty.create("text_ON_FOCUS_LOST");
Binding binding =
Bindings.createAutoBinding(READ_WRITE, duke, motherFirstP, textfield, textP);
binding.bind();

Beans Binding所面向的是Swing的领域,在过去Swing领域曾经用过类似于JGoodies Binding这样的项目。另外的一个项目则是来自于Eclipse Foundation的JFace Data Binding,它为SWT、JFace和JavaBeans提供了核心的实现。不过这个框架早就为Swing和EMF这样的API留好了未来的扩展余地。

查看英文原文:JSR 295 Beans Binding Hits 1.0

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT