JFace Viewer 1


 

第5章. JFace Viewers

尽管SWT提供了本地平台控件接口,但是它们仅限于使用字符,数字,图像这样的简单数据。这对于大数据量的程序很好用,但是要在列表,表格,树,文字控件上处理面向对象的数据就很吃力。这时就需要使用JFace viewer,它为SWT控件提供了面向对象的封装。



 

5.1. 面向目录的Viewer

JFace 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中定义的方法包括: 

getImage(Object) 返回给定元素对应的图标.  

getText(Object) 返回给定元素对应的文字。

ITableLabelProvider 中定义的方法包括:

getColumnImage(Object, int) 返回给定元素的指定列对应的图标。  

getColumnText(Object, int) 返回给定元素的指定列对应的文字。

使用标签供给器的程序例子, 参见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定义的方法包括: 

getElements(Object)Object作为给定的输入对象,返回对应的 要在viewer显示的元素。 

inputChanged(Viewer, Object, Object) 输入的数据发生变化时的,需要进行的动作。

ITreeContentProvider 定义的方法包括:

 Object[] getChildren(Object) 返回给定元素的子节点。该方法同 getElements(Object) 的区别在于后者用来获取整棵树的根节点,而它是用来获取每个节点的子节点(当然也包括根节点)。  

getParent(Object) 返回给定元素的父节点或者返回 null来表示没有父节点。

hasChildren(Object) 返回该元素是否有子节点。 

内容供给器的程序例子参见 5.1.6 节, ListViewer 类。


       

你可能感兴趣的:(JFace Viewer 1)