JavaBean的客户化

 

JavaBean的客户化

JavaBean开发者可以给一个Bean添加用户化器(Customizer)、属性编辑器(PropertyEditor)和BeanInfo接口来描述一个Bean的内容,Bean的使用者可在构造环境中通过与Bean附带在一起的这些信息来用户化Bean的外观和应做的动作。一个Bean不必都有BeanCustomizerPrpertyEditorBeanInfo,根据实际情况,这些是可选的,当有些Bean较复杂时,就要提供这些信息,以Wizard的方式使Bean的使用者能够用户化一个Bean。有些简单的Bean可能这些信息都没有,则构造工具可使用自带的透视装置,透视出Bean的内容,并把信息显示到标准的属性表或事件表中供使用者用户化BeanBean的属性、方法和事件名要以一定的格式命名,主要的作用就是供开发工具对Bean进行透视。当然也是给程序员在手写程序中使用Bean提供方便,使他能观其名、知其意。

l       用户化器接口(Customizer Interface

当一个Bean有了自己的用户化器时,在构造工具内就可展现出自己的属性表。在定义用户化器时必须要实现java.beans.Customizer接口。例如,下面是一个"按钮"Bean的用户化一器:

 

public class OurButtonCustomizer extends Panel implements Customizer {

... ...

/*当实现象OurButtonCustomizer这样的常规属性表时,一定要在其中实现*addProperChangeListenerremovePropertyChangeListener,这样,构造工具可用这些功能代码为属性事件添加监听者。*/

... ...

private PropertyChangeSupport changes=new PropertyChangeSupport(this);

public void addPropertyChangeListener(PropertyChangeListener l) {

changes.addPropertyChangeListener(l);

       }

public void removePropertyChangeListener(PropertyChangeListener l) {

changes.removePropertyChangeListener(l);

}

}... ...

l       属性编辑器接口(PropertyEditor Interface

一个JavaBean可提供PropertyEditor类,为指定的属性创建一个编辑器。这个类必须继承自java.beans.PropertyEditorSupport类。构造工具与手写代码的程序员不直接使用这个类,而是在下一小节的BeanInfo中实例化并调用这个类。例:

public class MoleculeNameEditor extends java.beans.PropertyEditorSupport {

public String[] getTags() {

String resule[]={

"HyaluronicAcid","Benzene","buckmisterfullerine",

"cyclohexane","ethane","water"};

return resule;

}

}

上例中是为Tags属性创建了属性编辑器,在构造工具内,可从下拉表格中选择MoleculeName的属性应是"HyaluronicAid"或是"water"

l       BeanInfo接口

每个Bean类也可能有与之相关的BeanInfo类,在其中描述了这个Bean在构造工具内出现时的外观。BeanInfo中可定义属性、方法、事件,显示它们的名称,提供简单的帮助说明。 例如:

public class MoleculeBeanInfo extends SimpleBeanInfo {

public PropertyDescriptor[] getPropertyDescriptors() {

try {

PropertyDescriptor pd=new PropertyDescriptor("moleculeName",Molecule.class);

/*通过pd引用了MoleculeNameEditor,取得并返回moleculeName属性*/

pd.setPropertyEditorClass(MoleculeNameEditor.class);

PropertyDescriptor result[]={pd};

return result;

} catch(Exception ex) {

System.err.println("MoleculeBeanInfo: unexpected exeption: "+ex);

return null;

}

}

}

 

posted on 2007-10-15 21:28 桑之兮(CS-LIN) 阅读(111) 评论(0)  编辑  收藏 所属分类: Java




标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-10-15 21:30 编辑过
 
 
相关链接:
网站导航:



<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔分类(6)

随笔档案(6)

相册

搜索

最新评论

阅读排行榜

评论排行榜