JavaBeans程序开发从入门到精通(4)

2008-02-23 07:46:31来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



   /*当实现象OurButtonCustomizer这样的常规属性表时,

   一定要在其中实现addProperChangeListener

   和removePropertyChangeListener,这样,

   构造工具可用这些功能代码为属性事件添加监听者。*/

   ... ...

   private PropertyChangeSupport changes=new PropertyChangeSupport(this);

   public void addPropertyChangeListener(PropertyChangeListener l) {

    changes.addPropertyChangeListener(l);

    public void removePropertyChangeListener(PropertyChangeListener l) {

     changes.removePropertyChangeListener(l);

    }

  ... ...

  属性编辑器接口(PropertyEditor Interface)

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

  public class MoleculeNameEditor extends java.Beanss.PropertyEditorSupport {

   public String[] getTags() {

    String resule[]={

     "HyaluronicAcid","Benzene","buckmisterfullerine", "cyclohexane","ethane","water"};

    return resule;}

  }

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

  BeansInfo接口

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

  public class MoleculeBeansInfo extends SimpleBeansInfo {

   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("MoleculeBeansInfo: unexpected exeption: " ex);

     return null;

    }

   }

  }

  JavaBeans持久化

  当一个JavaBeans在构造工具内被用户化,并与其它Beans建立连接之后,它的所有状态都应当可被保存,下一次被load进构造工具内或在运行时,就应当是上一次修改完的信息。为了能做到这一点,要把Beans的某些字段的信息保存下来,在定义Beans时要使它实现java.io.Serializable接口。例如:

  public class Button

  implements java.io.Serializable {}

  实现了序列化接口的Beans中字段的信息将被自动保存。若不想保存某些字段的信息则可在这些字段前冠以transient或static关键字,transient和static变量的信息是不可被保存的。通常,一个Beans所有公开出来的属性都应当是被保存的,也可有选择地保存内部状态。 Beans开发者在修改软件时,可以添加字段,移走对其它类的引用,改变一个字段的private/protected/public状态,这些都不影响类的存储结构关系。然而,当从类中删除一个字段,改变一个变量在类体系中的位置,把某个字段改成transient/static,或原来是transient/static,现改为别的特性时,都将引起存储关系的变化。

  JavaBeans的存储格式

  JavaBeans组件被设计出来后,一般是以扩展名为jar的Zip格式文件存储,在jar中包含与JavaBeans有关的信息,并以MANIFEST文件指定其中的哪些类是JavaBeans。以jar文件存储的JavaBeans在网络中传送时极大地减少了数据的传输数量,并把JavaBeans运行时所需要的一些资源捆绑在一起,本章主要论述了JavaBeans的一些内部特性及其常规设计方法,参考的是JavaBeans规范1.0A版本。随着世界各大ISV对JavaBeans越来越多的支持,规范在一些细节上还在不断演化,但基本框架不会再有大的变动。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JSP/Servlet 中的汉字编码问题

下一篇:J2SE中的序列化的认识