JavaBean编辑器的简单介绍

引言

Sun所指定的JavaBean规范很大程度上是为IDE准备的--它让IDE能够以可视化的方式设置JavaBean的属性。如果在IDE中开发一个可视化的应用程序,则需要通过属性设置的方式对组成应用的各种组件进行定制,IDE通过属性编辑器让开发人员使用可视化的方式设置组件的属性。

一般的IDE都支持JavaBean规范所定义的属性编辑器,当组件开发商发布一个组件时,它往往将组件对应的属性编辑器捆绑发行,这样的开发者就可以在IDE环境下方便地利用属性编辑器对组件进行定制工作。

JavaBean规范通过java.beans.PropertyEditor定义设置JavaBean属性地方法,通过BeanInfo描述了JavaBean的哪些属性是可定制的,此外还描述了可定制属性与PropertyEditor的对应关系。

BeanInfo与JavaBean之间的对应关系通过二者之间的命名规范确立d对应JavaBean的BeanInfo采用如下的命名规范:< Bean >BeanInfo。

JavaBean规范提供了一个管理默认属性编辑器的管理器PropertyDitorManager,该管理器内保存着一些常见类型的属性编辑器。一般来说,如果某个JavaBean的常见类型属性没有通过BeanInfo显式指定属性编辑器,那么IDE将自动使用PropertyEditorManager中注册的对应默认属性编辑器。

PropertyEditor

PropertyEditor是属性编辑器的接口,它规定了将外部设置值转换为内部JavaBean属性值的转换接口方法。PropertyEditor主要的接口方法说明如下:

  1. Object getValue():返回属性的当前值,基本类型被封装对应的封装类实例。
  2. void setValue(Object newValue):设置属性的值,基本类型以封装类传入。
  3. String getAsText():将属性对象用一个字符串表示,以便外部的属性编辑器能够可视化的方式显示。默认返回null,表示该属性不能以字符串表示。
  4. void setAsText(String text):用一个字符串去更新属性的内布置,这个字符串一般从外部属性编辑器传入。
  5. String[] getTags():返回表示有效属性值的字符串数组(如boolean属性对应的有效Tag为true和false),以便属性编辑器能以下拉框的方式显示出来。默认返回null,表示属性没有匹配的字符值有限集合。
  6. String getJavaInitializationString:为属性提供一个表示初始值的字符串,属性编辑器以此值作为属性的默认值。

    PropertyEditor接方法是内部属性值和外部设置值的沟通桥梁。此外,可以很容易发现该接口的很多方法是专为IDE中的可视化属性编辑器提供的。

    Java为PropertyEditor提供了一个方便类PropertyEditorSupport,该类直线了PropertyEditor并提供了默认实现。一般情况下,用户可以通过扩展这个方便类设计自己的属性编辑器。

BeanInfo

BeanInfo主要描述了JavaBean的哪些属性恶意编辑及对对应的属性编辑器,每个属性对应一个属性描述器PropertyDescrptor。PropertyDescriptor的构造函数有两个入参:PropertyDescriptor(String propertyName,Class beanClass),其中propertyName为属性名,beanClass为JavaBean对应对应的Class。此外,PropertyDescriptor还有一个setPropertyDeitorClass(Class propertyEditorClass)方法,用于为JavaBean属性指定编辑器。BeanInfo接口最重要的方法就是PropertyDescriptor[] getPropertyDescriptors(),该方法返回JavaBean的属性描述器数组。

BeanInfo接口有一个常用的实现类SimpleBeanInfo,一般情况下,可以通过扩展SimpleBeanInfo实现自己的功能。

上一篇:团队Github实战训练


下一篇:深度理解 Virtual DOM