有关java bean一些学习体会
来源:互联网 发布:名器哪款接近真人知乎 编辑:程序博客网 时间:2024/04/29 15:42
1 什么是java bean?
java bean只是一个遵守了某些比较严格的方法命名规范的类.最初是为了方便gui工具.它同ejb是本质上不同的两种东西
2 有哪些命名规范?
如果提供了显式的有参构造函数,应再提供一个显式的无参构造函数. 依据成对的get,set方法设置和获得属性.例如getName(),setName(String name).存在这两个方法并不是说明一定存在一个叫做name的数据成员;get和set不一定都要出现,这时分别叫做只读属性,或只写属性
Property name/type Get method Set method
xcoordinate/Double public Double getXcoordinate() publicvoid setXcoordinate
(DoublenewValue)
xCoordinate/Double public Double getxCoordinate() publicvoid setxCoordinate
(Double newValue)
XCoordinate/Double public Double getXCoordinate() publicvoid setXCoordinate
(Double newValue)
Xcoordinate/Double Not allowed Not allowed
student/Boolean public Boolean getStudent() publicvoid setStudent(Boolean
newValue)
student/boolean public boolean getStudent() public void setStudent(boolean
public boolean isStudent() newValue)
3 java bean有哪些种类?
分为4种Simple Properties,Indexed Properties,bound Properties,Constraint Properties.
Indexed Properties 一般有两对方法:
Type[] getPropertyName()
void setPropertyName(Type[] newValue)
Type getPropertyName(int i)
void setPropertyName(int i, Type newValue)
bound Properties
当属性的值改变时,它要产生一个PropertyChangeEvent,给所有已注册的监听者.类要提供这样的方法:
void addPropertyChangeListener(PropertyChangeListener listener)
void removePropertyChangeListener(PropertyChangeListener listener)
java.beans.PropertyChangeSupport类提供了方便的包装
下面是演示
private PropertyChangeSupport changeSupport = newPropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener){
changeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener){
changeSupport.removePropertyChangeListener(listener);
}
public PropertyChangeListener[] getPropertyChangeListeners(){
return changeSupport.getPropertyChangeListeners();
}
public void setValue(Type newValue){
Type oldValue =getValue();
value =newValue;
changeSupport.firePropertyChange("propertyName", oldValue,newValue);
}
Constraint Properties. 当在属性的set方法中想要改变属性的值时,先产生一个通知,给所有的java.beans.VetoableChangeListener
如果有一个产生了否定了改变,那么这个listener会产生一个异常,并回传到这个set方法,这个set方法抛出这个异常,改变程 序的执行路径.代码演示
如下:
public void setValue(Type newValue) throws PropertyVetoException{
Type oldValue = getValue();
vetoSupport.fireVetoableChange("value", oldValue, newValue);// 能够继续执行,说明并没有任何一个监听者否决了改变
value = newValue;
changeSupport.firePropertyChange("value", oldValue, newValue);
}
4 打包bean类文件的注意事项具有能产生事件的bean写好后.为了使gui build tool能够使用,要打成jar包,在manifest文件中Manifest-Version: 1.0
Name: com/horstmann/corejava/ImageViewerBean.class
Java-Bean: True5 关于BeanInfo接口的作用?Name: com/horstmann/corejava/FileNameBean.class
Java-Bean: True
(注意,版本号后有一个新行,中间有一个空行,最后也还有一个空行
提供一个更灵活的机制来展现java bean 的属性,因为当一个bean变得复杂时,并不是所有的get,set方法都是属性,
而且肯定有些属性是内部属性,完全依赖反射得不到我们想要的结果.这时定义一个对象实现了BeanInfo接口就是一个好的解决办法
如果你有一个bean叫做ImageViewerBean,那么相应的BeanInfo的类文件必须在同一个包中,并且叫做ImageViewerBeanBeanInfo
你并不用实现BeanInfo接口的所有方法,extend java.beans.SimpleBeanInfo是一个适配器的模式.
对于每一个属性,构造一个PropertyDescriptor,参数是property name和含有它的类:
PropertyDescriptor descriptor = new PropertyDescriptor("fileName", ImageViewerBean.class);
实现BeanInfo 接口的getPropertyDescriptors方法,返回所有你想展示的属性
其他BeanInfo接口的方法返回EventSetDescriptor和MethodDescriptor的数组,但并不常用
如果这些返回描述符数组的方法返回null,那么标准的反射机制使用了.
BeanInfo接口的getIcon方法给bean一个icon,它可以显示在builder tool的面板上,
事实上有四种大小 :ICON_COLOR_16x16,ICON_COLOR_32x32,ICON_MONO_16x16,ICON_MONO_32x32
下面是一个示例:
public class ImageViewerBeanBeanInfo extends SimpleBeanInfo{
public ImageViewerBeanBeanInfo() {
iconColor16 = loadImage("ImageViewerBean_COLOR_16x16.gif");
iconColor32 = loadImage("ImageViewerBean_COLOR_32x32.gif");
iconMono16 = loadImage("ImageViewerBean_MONO_16x16.gif");
iconMono32 = loadImage("ImageViewerBean_MONO_32x32.gif");
}
public Image getIcon(int iconType){
if (iconType == BeanInfo.ICON_COLOR_16x16) return iconColor16;
else if (iconType == BeanInfo.ICON_COLOR_32x32) return iconColor32;
else if (iconType == BeanInfo.ICON_MONO_16x16) return iconMono16;
else if (iconType == BeanInfo.ICON_MONO_32x32) return iconMono32;
else return null;
}
private Image iconColor16;
private Image iconColor32;
private Image iconMono16;
private Image iconMono32;
}
- 有关java bean一些学习体会
- Java 学习体会
- Java 学习体会
- Java学习体会
- Java学习体会
- java学习体会
- JAVA学习体会
- Java学习体会
- java 学习体会
- java框架学习体会
- java输入输出流学习体会
- 关于C++的一些学习体会!
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- eboot startup.s中设置一级页表的详细过程
- sql server2008数据库复制实现数据同步常见问题
- OpenID流程概述及其与OAuth的区别
- elastix 1.6 安装Openvox AE2410P 笔记
- Android IPC机制详解
- 有关java bean一些学习体会
- 应用实例三
- c++学习笔记--引用&
- 转自【柳永法】SQL统计:从北京到天津的与从天津到北京的汇总到一起 常用sql语句 SQL Server 生成版权信息及测试环境信息
- 特征值与特征向量概念
- x509及其ASN.1表示法
- DataGridView(自定义表格)
- VoIP基本原理与发展历程(1)
- Set是如何实现“没有重复元素”