http://blog.itpub.net/post/5050/23410
基本的部件平台SWT仅仅提供了一些直接的接口,这些接口实现仅限于对一些简单数据类型的应用,比如基本的字符串类型,数值类型已及图片等。针对大多数应用程序也许这些实现已经足够了,但是如果需要在列表框、表格、树状结构、文本处理中来处理一些要求比较严格的对象时,这些小控件的使用受到了挑战。那么在SWT小控件基础之上进行更高一级的面向对象的封装便产生了JFace 视图框架。
象ListViewer、TableViewer以及TreeViewer这些JFace列表视图允许用户可以直接使用自己定义的数据模型,而没有必要手动地把一些基本的字符、数字、图像元素分开来组织处理。这些视图类通过提供一些适配器接口来组织上述元素,还可以直接访问列表视图中某一个项目的子结点(比如树型试图),这些适配器接口同时提供了列表视图项目的选择、排序、过滤以及转换一些输入到底层SWT部件所能匹配的列表中(见图5-1)。
Figure 5-1 视图和适配器之间的关系
5.1.1. 标签提供接口适配器
在列表视图中,标签提供器是一种最常见的适配器类型。标签提供器用来把一个数据模型对象在视图列表中映射成一个或者多个可显示的文本字符串或者图形元素。其中两个最常见的标签提供器是IlabelProvider(见图 5-2)和ITableLabelProvider (见图 5-3) , IlabelProvider用在列表框和树型结构视图中而ItableLabelProvider 多用在表格试图中,前者主要是为列表项提供单一的图像和文本内容而后者为可以提供多个图像以及文本标签(针对表格中的每一列提供一套图形和文本元素)。通过视图接口方法setLabelProvider()可以使得一个标签提供器与之关联。
ILabelProvider提供了如下常用方法:
getImage(Object) -为指定的元素标签提供图像元素。
getText(Object) -为指定的元素提供文本描述。
图5-2 标签提供器集成结构
getColumnImage(Object, int) - 为表格视图中某一行元素指定的列提供图像元素。
getColumnText(Object, int) - 为表格视图某一行元素指定的列提供文本描述。
图5-3 Table标签提供器
标签提供器的例子可以参考5.1.6节。
5.1.2. 内容提供接口适配器
内容提供器同样也是所有列表视图集合中一种重要的适配器。内容提供器主要用来使得一个数据模型对象或多个数据模型对象组成的一个集合作为视图的数据输入或者为结构化视图的集合列表提供主要的数据输入。使用在列表和表格中的IstructuredContentProvider和使用在树形结构中的ItreeContentProvider是两种常见的内容提供器(见图 5-4)。IstructuredContentProvider通常将一个数据模型对象映射成一个数组而后者为树形结构视图项目分别提供其获得父结点元素和孩子结点元素的支持。同样setContentProvider()可以使得内容提供器和某个视图相关联。数据的输入可以通过方法setInput()与视图相关联。
图 5-4 内容提供器继承层次结构
IStructuredContentProvider提供的常用方法:
getElements (Object) -返回显示在视图中的某一个输入元素的所有元素。
inputChanged(Viewer, Object, Object) -通知内容提供器视图中的某一个输入对象被转换到另外一个不同的元素。
ITreeContentProvider提供的常用方法:
Object[] getChildren(Object) -为指定的结点元素获得其所有孩子结点对象。这个方法和上面提到的getElements(Object)方法的不同之处是getElements(Object)
用来获得一个树形视图的根结点元素,而getChildren(Object)用来对给定的父结点元素获得其所有的下层孩子结点(包括根结点)。
getParent(Object) -返回给定结点元素所属的父结点,如果不存在返回null.
hasChildren(Object) -给定的结点是否拥有孩子结点。
关于内容提供器的例子可以参考5.1.6章节。
5.1.3. 视图排序适配器
排序适配器(见图5-5 ViewerSorter继承层次结构)主要用来对内容适配器所提供的元素进行排序(见图5-1)。如果没有为视图提供排序适配器,元素的排列顺序将和内容提供适配器返回的顺序一致。通过setSorter()方法可以将一个排序适配器与一个视图关联。
默认排序策略分为两步。首先将元素分组(从0到n级),然后再基于这个分组之上根据标签适配器提供的标签文本排序。默认情况下,所有的项目均属于同一个分组,因此所有的项目也就通过他们的文本标签进行排序。作为您的应用程序您可以覆盖默认的分组侧略作为排序规则而不是使用基本的标签文本排序逻辑。
图5-5 视图排序适配器继承层次结构
ViewerSorter提供的常用方法:
category(Object) -返回指定元素所属的组。
返回前后两个对象的比较结果,前者大于后者返回正数、等于返回0、小于返回负数。
getCollator()-为排序文本返回校对器。
isSorterProperty(Object, String) - 当一个指定的元素的属性发生变化时试图的排序适配器是否受到影响。
sort(Viewer viewer, Object[]) -排序给定的数组对象。
关于视图排序适配器的例子可参见5.1.6章节
5.1.4. 视图过滤适配器
视图过滤适配器接口提供了一种过滤方法(见图5-6 ViewerFilter视图继承结构),通过应用该过滤方法,该视图可以显示内容提供适配器接口提供内容的一个子集(见图5-1)。如果没有为一个视图提供过滤适配器,则所有的元素将显示在视图中。通过调用视图的setFilter()方法将一个视图过滤适配器的实现与之关联。
图5-6 视图过滤适配器继承层次结构
下面是ViewerFilter一些常用方法。一些简单的View Filters仅仅需要覆盖方法select(Viewer, Object, Object) 来决定某一个元素是否显示在Viewer中。
filter(Viewer, Object, Object[]) - 过滤视图中的元素。这个方法的默认实现是调用下面的select(Viewer, Object, Object) 方法。
isFilterProperty(Object, String) - 判断某一个给定的viewer元素的属性发生变化时是否产生过滤效果,这个方法的默认实现将返回false。
select(Viewer, Object, Object) - 判断某一个给定Viewer元素在这个过滤器中是否被选中。
分享到:
相关推荐
4. **JFace视图**:JFace视图是应用程序中的独立工作区,可以显示特定的信息或工具。学习如何创建和管理视图是JFace入门的重要步骤。 5. **JFace对话框**:对话框用于与用户进行交互,如输入数据或确认操作。JFace...
4. **视图和编辑器**:在Eclipse IDE中,JFace视图和编辑器的概念被广泛使用。视图通常用于显示信息,而编辑器则用于编辑内容。两者都可以方便地添加到工作台中。 5. **对话框和表单**:JFace提供了Dialog类的子类...
5. 视图和编辑器:JFace视图是Eclipse插件开发中的重要概念,用于展示数据;编辑器则用于编辑数据,两者都是Eclipse RCP(Rich Client Platform)应用的核心部分。 6. 对话框:包括标准对话框(如MessageDialog、...
- **视图与控制器**:介绍如何创建JFace视图,利用Viewer框架展示数据,并实现相应的控制器逻辑。 - **对话框与消息框**:展示如何创建自定义对话框,以及使用标准的MessageDialog和InputDialog。 5. **第三章:...
2. **JFace 视图和控制器**:JFace 提供了 `ViewPart` 类,它是 Eclipse RCP 应用中的视图基础。在这里,可能会有一个自定义的 `ViewPart` 实现登录窗口。同时,`Action` 类可以用来处理按钮点击事件,实现登录逻辑...
4. 视图和编辑器:阐述了JFace视图和编辑器的概念,以及如何创建和管理这些组件,用于展示信息或进行用户交互。 5. 对话框和消息:介绍如何使用JFace的Dialog类来创建各种对话框,如信息提示、确认对话、输入对话等...
- JFace的视图和编辑器:介绍如何创建和管理JFace视图和编辑器,用于展示数据和处理用户输入。 - 数据绑定:详细说明如何利用JFace的数据绑定机制,将界面元素与后台数据模型关联。 - 模型-视图-控制器:深入理解...
2. JFace视图和编辑器:如何创建和管理视图,提供信息展示和交互;编辑器用于处理特定类型的文件或数据,如代码编辑器、资源管理器等。 3. 数据模型和数据绑定:理解如何使用JFace的数据模型来封装和管理数据,以及...
7. **JFace视图和编辑器**:视图和编辑器是Eclipse工作台的核心概念,源代码可能展示了如何创建和管理这些组件,以提供不同的功能区域。 8. **对话框和提示**:JFace提供了方便的对话框类,如MessageDialog、...
4. 视图和控制器:学习如何创建和管理JFace视图,以及如何实现视图和模型之间的交互。 5. 数据存储与持久化:学习如何使用Eclipse的Preference Service保存用户配置,或者使用SQL数据库存储和检索应用程序数据。 6...
例如,如果你有一个名为`MyView`的JFace视图类,你可以创建一个测试类`MyViewTest`: ```java import org.junit.Test; import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; import org.eclipse....
7. 视图(Views)和编辑器(Editors):在Eclipse RCP框架下,如何使用JFace创建可重用的视图和专业化的编辑器。 8. 事件处理:讲解如何注册和处理SWT和JFace事件,如SelectionEvent、FocusEvent等。 9. SWT和JFace...
通过分析这些源代码,开发者可以学习到如何创建和组织JFace应用程序,如何定义视图,如何处理模型和视图之间的数据绑定,以及如何使用JFace提供的对话框和表单组件。同时,"工具"标签可能意味着其中包含了辅助开发的...
4. 视图和编辑器:展示如何使用JFace创建可复用的视图和编辑器组件。 5. 数据模型:介绍如何使用JFace的数据模型来处理应用程序的数据。 6. 工具栏和菜单:如何利用Action创建工具栏和菜单,并实现响应用户操作的...
5. **视图和编辑器**:在Eclipse IDE中,JFace用于创建可复用的视图和编辑器组件,这在构建插件或RCP(Rich Client Platform)应用时非常有用。 在"Oreilly.SWT.A.Developers.Notebook.Oct.2004.eBook-LiB.chm"这...
JFace是建立在SWT之上的高级UI框架,简化了UI组件的创建和管理,提供了数据绑定、事件处理和视图模型等高级功能。 描述中提到的"swt/Jface用到的最基本的jar包"暗示了这个jar文件是构建基于SWT和JFace的应用程序的...
- **实现**:展示如何使用JFace来创建一个组合框类型的视图。 #### 十三、字段辅助和控件装饰 - **字段辅助**:提供智能提示和代码补全功能。 - **控件装饰**:在界面上显示额外的信息或状态标记。 #### 十四、...
3. **视图和编辑器**:通过 JFace 可以轻松创建复杂的视图和编辑器,这些组件通常用于显示和编辑数据集。 4. **向导和对话框**:JFace 提供了一系列工具来创建向导和对话框,这些工具使得开发者能够快速创建出符合...
JFace的主要组件包括视图(View)、编辑器(Editor)、对话框(Dialog)以及数据绑定机制。 3. Eclipse IDE与SWT/JFace Eclipse作为一款强大的集成开发环境(IDE),其用户界面大量使用了SWT和JFace。这使得...
2. **Dialogs和Views**:JFace 提供了一系列预定义的对话框(Dialogs)和视图(Views)类,如InputDialog、MessageDialog、WizardDialog等,这些对话框可以快速地构建常见的用户交互。而View则允许在Eclipse RCP...