每个Java用户界面类都是一个JavaBeans组件。
JavaBeans是一种软件组件体系结构,在诸如NetBeans和Eclipse等一些纯Java开发工具中,它能够在设计中可视化地操作结构良好的对象,从而极大地扩展了Java语言的能力。这些结构良好的对象被称作JavaBeans,简称为beans。定义beans的类称为JavaBeans组件或bean组件。
符合JavaBeans组件模型的类满足下面的要求:
1)bean必须是公共类。
2)尽管bean可能有其他构造方法,但是必要时必须有一个公共的无参构造方法。
3)bean必须实现接口java.io.Serializable,以确保其持续性。
4)bean的属性通常带有构造恰当的公共访问器方法和修改器方法。
5)bean的事件可能带有构造恰当的、公共的注册方法和注销方法。
前三个条件必须满足,因此,这三个条件称为JavaBeans组件的最低要求。
属性是相互分离的,它们以影响Java bean外观或行为的特殊来命名,通常是bean的数据域。
1)属性的命名方式
bean属性的命名方式是JavaBeans组件模型的一个约定,用来简化bean开发者对属性的表示。属性可能是基本数据类型,也可能是对象类型。
一般来说,访问器方法命名为get<PropertyName>(),它不带参数,返回一个与属性类型一致的基本数据类型值或对象。
2)属性和数据域
属性描述bean的状态。很自然地,数据域用于存储属性。然而,bean属性未必是一个数据域。
例如,
public int getMessageLength() { return message.length(); }
一个bean可以与其他bean相互通信。Java事件委托模型为bean发送、接收和处理事件提供基础。Java事件模型由下面三种类型的元素组成:
① 事件对象
② 源对象
③ 事件监听器对象
1)事件类和事件监听器接口
事件对象是使用像ActionEvent、MouseEvent这样的事件类来创建的。
每个事件类与一个事件监听器接口关联,这种接口定义一个或多个称为处理器的方法。
由于事件类与它的监听器接口是相互依存的,所以经常称其为事件组或事件对。
2)源组件
产生事件的组件称为事件源。每个Java GUI组件都是一个或多个事件的事件源。
源组件包含用于检测引发事件外部或内部动作的代码。
3)监听器组件
一个事件的监听器组件必须实现事件监听器接口。
一个监听器组件可以实现任意多个监听器接口,以便监听多种类型的事件。
源组件必须有适当地注册与注销方法,用来添加和删除监听器。事件可以单点传送,也可以多点传送。添加一个单点传送监听器的命名方式为:
public void add<Event>Listener(<Event>Listener l) throws TooManyListenersException;
添加多点传送监听器的命名方式同上面一样,但是不会抛出TooManyListenersException异常。
public void add<Event>Listener(<Event>Listener l)
删除一个监听器的命名方式为:
public void remove<Event>Listener(<Event>Listener l)
源组件包含特定的代码,可以创建事件对象,以及通过传递这个事件对象去调用监听器的处理器。
Java API提供了许多事件组。使用Java API中已存在的事件组是很方便的,但这往往不够。有时候,为了获得用现有API事件类不可能获得的信息,需要声明自定义事件类。
自定义事件类必须扩展java.util.EventObject类或者java.util.EventObject类的一个子类。
自定义事件监听器接口必须扩展java.util.EventListener接口或者java.util.EventListener接口的一个子类接口。