第5章. JFace Viewers尽管SWT提供了本地平台控件接口,但是它们仅限于使用字符,数字,图像这样的简单数据。这对于大数据量的程序很好用,但是要在列表,表格,树,文字控件上处理面向对象的数据就很吃力。这时就需要使用JFace viewer,它为SWT控件提供了面向对象的封装。 |
5.1. 面向目录的ViewerJFace viewer包括 ListViewer, TableViewer, 和 treeViewer, ,通过它们你可以直接使用域模型对象(例如,像公司,人,部门这样的业务对象),而不用手工将它们分解成基本的字符,数字,图片。这些viewer提供了适配接口来做作这些事情,包括接受一个条目的标签(图片和文字),访问一个条目的子节点(如果是树),从列表中选择条目,为条目排序,过滤条目,将一个随意输入的对象转化为适合底层的SWT控件显示。 (see Figure 5-1).
Figure 5-1. viewer及相关适配器关系图. |
5.1.1. 标签供给器标签供给器是viewer中最常用的适配器之一。它负责在控件中映射域模型对象到可显示的文字和图片。 两个最常用的标签供给器是 ILabelProvider (参考 Figure 5-2), 它在列表和树中使用, ITableLabelProvider (参考 Figure 5-3),它是在表格中使用。 ILabelProvider 是映射一个条目到单个图片和文字,ITableLabelProvider 是映射一个条目到多个图片和文字(对应表格中的每一列)。 viewer通过 setLabelProvider() 方法来使用标签供给器
Figure 5-2. LabelProvider 层次图Figure 5-3. TableLabelProvider 层次图
defined by ILabelProvider中定义的方法包括:
ITableLabelProvider 中定义的方法包括:
使用标签供给器的程序例子, 参见5.1.6 节, ListViewer 类。 |
5.1.2. 内容供给器内容供给器为viewer提供了在一个或多个域模型对象和viewer所需要的内部目录结构之间的映射,域模型对象是从外界输入到viewer中的。 两个最常用的内容供给器是 IStructuredContentProvider, 它使用在列表和表格中, ITreeContentProvider, 使用在树中 (参见 Figure 5-4). tt>IStructuredContentProvider映射一个域模型到一个数组对象,ITreeContentProvider则支持获取某个节点的 父节点和字节点(在树中使用)。viewer通过 setContentProvider() 方法来使用内容供给器。域模型通过setInput() 方法输入到viewer中。 Figure 5-4. ContentProvider 层次图IStructuredContentProvider定义的方法包括:
ITreeContentProvider 定义的方法包括:
内容供给器的程序例子参见 5.1.6 节, ListViewer 类。 |