UIComponent 是Java语言所有可视组件(交互式和非交互式)的基类。 交互式组件被定义为接收用户输入(例如键盘或鼠标活动)的组件。 非交互式组件用于显示数据;它们对用户交互不做响应。
ProgressBar 和 UILoader 组件是非交互式组件的示例。Tab 和箭头键可以用来将焦点移到交互式组件上以及将焦点从交互式组件上移开;交互式组件可以接受低级别事件,例如鼠标和键盘设备的输入。 也可以禁用交互式组件,以便它无法接收鼠标和键盘输入。
通常一个UI Component包含了两个部分:Behavior和Renderer.两者最好能够分别实现,UIComponent类用来实现Behavior,比如处理事件,通过EL绑定属性等等。专门实现一个Renderer类来负责Encoding和Decoding。Encoding指的是生成可以在客户端显示的标记语言,比如html等,Decoding用来将客户端传来的请求(通常以某种标记语言风格)转换成Java变量。