- 浏览: 149486 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
JFace
JFace是基于SWT的一套图形工具包,它没有为SWT提供任何新的功能,只是将一些繁琐而且常用的图形操作封装了起来,使得开发工作更加简便。JFace完全使用SWT API进行开发,并没有涉及到SWT中任何平相关的部分,所以JFace没有不同平台版本之分。
JFace的雏形是在Eclipse开发人员编写IDE图形界面时,为了方便而针对一些常见的图形界面开发模式(如对话框等)开发出来的一系列组件。由于JFace只是对SWT的少数常用的部分功能的封装,所以,JFace不能完全代替SWT,通常的开发方式是使用SWT完成大部分的工作,并在适当的时候使用JFace。那么什么是适当的时候呢,这就需要了解JFace到底对哪些常用操作做了封装。
1.Viewer 查看器,使得使用复杂控件进行开发更方便
查看器(Viewer)是使用MVC模式对一些复杂控件做的封装,以方便使用。
目前的查看器有:ListViewer,TableViewer,TreeViewer等。
查看器(如TableViewer)将数据模型从复杂的控件(如Table)中抽象出来,本身作为一个控制器来监听模型的变化和控件的变化,并负责传递这些变化。
开发者不需要具体操作那些复杂的控件,而只需对数据模型进行操作,就可以改变控件显示的内容。当控件的内容在页面上被修改时,查看器收到通知后也会发给数据模型,数据模型接到通知后可以检查这些修改并决定是否接受。查看器并没有将控件隐藏起来,开发者可以通过查看器提供的方法(如TableViewer的getTable方法,TreeViewer的getTree方法等)得到对应的底层控件对象并进行操作。
1)查看器框架
Viewer:所有查看器的父类,在其中包含了MVC的基本概念
ContentViewer:提供对内容提供者和标签提供者的支持,由这两者管理元素在控件中的显示(文字和图标等);
StructureViewer:用来显示结构化(如队列,树)的数据模型,并支持排序、过滤等功能;
需要明确的是,查看器可以做到的事情,直接使用控件也可以做到,查看器只不过是简化了对复杂控件的操作而已。使用查看器,开发者只需要对数据模型进行操作就可以方便的改变控件的显示内容。
查看器的框架有以下几个主要部分组成:
模型和元素:存储着要显示在控件中的数据模型(由开发者编写)
内容提供者和标签提供者:负责将数据模型转换成可以显示的文字和图片(由开发者编写)
控件:显示内容
查看器:负责协调上面各个部分的工作
所有的内容提供者都要实现接口IContentProvider,对应到具体的子类查看器,又有针对它们的数据结构的各种接口,如列表查看器和表格查看器要求内容提供者实现
IStructuredContentProvider接口,而树查看器的内容提供者则需要实现ITreeContentProvider接口。
内容提供者的另一项工作就是监听数据模型的变化,当接收到变化的消息时,要操作查看器以通知它这些变化,查看器会把这些操作转换成针对控件的操作并将变化反映在控件的界面上。
得到元素集合后,下一步就是显示到界面上,那些将元素转换成可以显示的文字和图片的工作由标签提供者(Label Provider)完成。标签提供者需要实现接口IBaseLabelProvider。与内容提供者类似,不同的查看器也需要不同的标签提供者,列表查看器可以使用接口ILabelProvider,而表格查看器则使用接口ITableLabelProvider。
IBaseLabelProvider中提供了一个方法isLabelProperty(Object element,String property),该方法用于判断对应元素element而言,property这个属性是否用于显示。在更新元素的时候,查
看器会通过该方法,如果元素的这个属性不会影响到显示内容,则没有必要更新这个元素的显示。查看器在执行update方法时,就是利用IBaseLabelProvider的这个方法判定该元素是否需要更新。
(1)外部调用Viewer.setInput为查看器指定模型
(2)查看器将新的模型传递给内容提供方
(3)内容提供方在模型上注册监听器,开始监听模型
(4)内容提供方将模型中的元素集合提取出来提供给查看器
(5)查看器将元素交给标签提供方
(6)标签提供方将元素中用于显示的文字、图片信息取出返回给查看器
(7)查看器把信息显示在控件里
(需要一个图示,查看器框架中各对象之间的关系)
2)JFace的列表查看器(ListViewer)、表格查看器(TableViewer)、树查看器(TreeViewer)
可以集合项目具体说一下(待补充。。。)
2.Resource Register 资源注册表,用于管理和自动释放程序中用到的图形系统资源;
使用SWT图形资源的一个原则就是“谁创建谁释放”,然而当程序结构复杂时,释放资源有可能会被遗忘。资源管理注册表就是为了方便图形资源管理而设计的,目前JFace包含了针对字体、颜色和图像资源的注册表。
(这里缺一个图,资源注册表的原理示意图)
JFace在JFaceResource类中为这些注册表提供了以单例(Singleton)模式的实现。使用这些资源注册表,就可以方便地对资源进行创建获取及销毁等操作。
3.Dialog,Wizard Page,Preference Page,包含了一些常用的模式化对话框;
在SWT对话框的基础上JFace实现了许多定制的对话框。如,带有图标的对话框、可以在系统托盘上显示的对话框,供用户输入内容的对话框。向导页(Wizard Page)用来引导用户一步步的完成某项操作的界面;首选项(Preference Page)可以用来设置专业的用户选项卡。JFace的框架帮助开发者完成了页面切换的工作,开发者只需编写每一页的内容并将它们添加到框架中就可以实现向导页或Preference Page的功能。
4.Action & Contribution 操作和贡献,这是用于控制菜单、工具栏等的一套框架;
Action和Contribution是用来定制菜单和工具栏的一套机制。这套机制将菜单、工具栏的按钮和它们所触发的事件分离开来,使得用户操作响应的控制更加灵活。
Action对象封装了一个操作命令。当Action被添加到菜单、工具栏上面时,用户单击这些菜单项或工具栏的按钮就会触发Action对象所代表的命令。为了显示在工具栏和菜单上,Action还包含了图标,ToolTip等信息。
Contribution由Contribution Item和Contribution Manager两部分组成。Action可以用来在工具栏和菜单栏上添加Contribution Item,而利用Action所包含的图标等信息显示工具栏或菜单栏的工作是由Contribution Item来完成的。Contribution Manger是包含了许多Contribution Item的集合。Contribution Item代表了工具栏或菜单栏中的某一项,而Contribution Manger则代表了工具栏或菜单栏。JFace中的Contribution Manger可以用来控制菜单、工具栏和状态栏。Contribution Manger会根据它所包含的Item的信息自动调整这些控件。
(有待完善,源码级别的。。。。)
5.Field Assist,字段帮助,使用它在控件附近县市提示性的标记和内容;
字段帮助(Field Assist)的目的就是为用户提供界面指导。Filed Assist提供两种功能:字段修饰(Decoration Filed),如图片、颜色等作为装饰;内容建议(Content Proposal),允许用户在控件附近弹出一个下拉框,提供用户可以选择的内容。
6.Data Binding,数据绑定,将数据模型与图形界面上的控件绑定起来,减少了程序员为了同步它们的数据而做的复杂工作。
数据绑定功能负责监听界面上所有控件和数据模型的内容,无论哪一方发生变化时都及时通知另一方。使用数据绑定技术,开发者在编写完图形界面并创建绑定后,数据绑定会负责根据变化自动同步数据模型和界面内容显示。当开发者需要获得用户输入时,可以直接访问数据模而不需要每次都编写访问界面控制的代码;当程序需要将数据展示给用户时,也只需更新模型就可以了。
JFace是基于SWT的一套图形工具包,它没有为SWT提供任何新的功能,只是将一些繁琐而且常用的图形操作封装了起来,使得开发工作更加简便。JFace完全使用SWT API进行开发,并没有涉及到SWT中任何平相关的部分,所以JFace没有不同平台版本之分。
JFace的雏形是在Eclipse开发人员编写IDE图形界面时,为了方便而针对一些常见的图形界面开发模式(如对话框等)开发出来的一系列组件。由于JFace只是对SWT的少数常用的部分功能的封装,所以,JFace不能完全代替SWT,通常的开发方式是使用SWT完成大部分的工作,并在适当的时候使用JFace。那么什么是适当的时候呢,这就需要了解JFace到底对哪些常用操作做了封装。
1.Viewer 查看器,使得使用复杂控件进行开发更方便
查看器(Viewer)是使用MVC模式对一些复杂控件做的封装,以方便使用。
目前的查看器有:ListViewer,TableViewer,TreeViewer等。
查看器(如TableViewer)将数据模型从复杂的控件(如Table)中抽象出来,本身作为一个控制器来监听模型的变化和控件的变化,并负责传递这些变化。
开发者不需要具体操作那些复杂的控件,而只需对数据模型进行操作,就可以改变控件显示的内容。当控件的内容在页面上被修改时,查看器收到通知后也会发给数据模型,数据模型接到通知后可以检查这些修改并决定是否接受。查看器并没有将控件隐藏起来,开发者可以通过查看器提供的方法(如TableViewer的getTable方法,TreeViewer的getTree方法等)得到对应的底层控件对象并进行操作。
1)查看器框架
Viewer:所有查看器的父类,在其中包含了MVC的基本概念
ContentViewer:提供对内容提供者和标签提供者的支持,由这两者管理元素在控件中的显示(文字和图标等);
StructureViewer:用来显示结构化(如队列,树)的数据模型,并支持排序、过滤等功能;
需要明确的是,查看器可以做到的事情,直接使用控件也可以做到,查看器只不过是简化了对复杂控件的操作而已。使用查看器,开发者只需要对数据模型进行操作就可以方便的改变控件的显示内容。
查看器的框架有以下几个主要部分组成:
模型和元素:存储着要显示在控件中的数据模型(由开发者编写)
内容提供者和标签提供者:负责将数据模型转换成可以显示的文字和图片(由开发者编写)
控件:显示内容
查看器:负责协调上面各个部分的工作
所有的内容提供者都要实现接口IContentProvider,对应到具体的子类查看器,又有针对它们的数据结构的各种接口,如列表查看器和表格查看器要求内容提供者实现
IStructuredContentProvider接口,而树查看器的内容提供者则需要实现ITreeContentProvider接口。
内容提供者的另一项工作就是监听数据模型的变化,当接收到变化的消息时,要操作查看器以通知它这些变化,查看器会把这些操作转换成针对控件的操作并将变化反映在控件的界面上。
得到元素集合后,下一步就是显示到界面上,那些将元素转换成可以显示的文字和图片的工作由标签提供者(Label Provider)完成。标签提供者需要实现接口IBaseLabelProvider。与内容提供者类似,不同的查看器也需要不同的标签提供者,列表查看器可以使用接口ILabelProvider,而表格查看器则使用接口ITableLabelProvider。
IBaseLabelProvider中提供了一个方法isLabelProperty(Object element,String property),该方法用于判断对应元素element而言,property这个属性是否用于显示。在更新元素的时候,查
看器会通过该方法,如果元素的这个属性不会影响到显示内容,则没有必要更新这个元素的显示。查看器在执行update方法时,就是利用IBaseLabelProvider的这个方法判定该元素是否需要更新。
(1)外部调用Viewer.setInput为查看器指定模型
(2)查看器将新的模型传递给内容提供方
(3)内容提供方在模型上注册监听器,开始监听模型
(4)内容提供方将模型中的元素集合提取出来提供给查看器
(5)查看器将元素交给标签提供方
(6)标签提供方将元素中用于显示的文字、图片信息取出返回给查看器
(7)查看器把信息显示在控件里
(需要一个图示,查看器框架中各对象之间的关系)
2)JFace的列表查看器(ListViewer)、表格查看器(TableViewer)、树查看器(TreeViewer)
可以集合项目具体说一下(待补充。。。)
2.Resource Register 资源注册表,用于管理和自动释放程序中用到的图形系统资源;
使用SWT图形资源的一个原则就是“谁创建谁释放”,然而当程序结构复杂时,释放资源有可能会被遗忘。资源管理注册表就是为了方便图形资源管理而设计的,目前JFace包含了针对字体、颜色和图像资源的注册表。
(这里缺一个图,资源注册表的原理示意图)
JFace在JFaceResource类中为这些注册表提供了以单例(Singleton)模式的实现。使用这些资源注册表,就可以方便地对资源进行创建获取及销毁等操作。
3.Dialog,Wizard Page,Preference Page,包含了一些常用的模式化对话框;
在SWT对话框的基础上JFace实现了许多定制的对话框。如,带有图标的对话框、可以在系统托盘上显示的对话框,供用户输入内容的对话框。向导页(Wizard Page)用来引导用户一步步的完成某项操作的界面;首选项(Preference Page)可以用来设置专业的用户选项卡。JFace的框架帮助开发者完成了页面切换的工作,开发者只需编写每一页的内容并将它们添加到框架中就可以实现向导页或Preference Page的功能。
4.Action & Contribution 操作和贡献,这是用于控制菜单、工具栏等的一套框架;
Action和Contribution是用来定制菜单和工具栏的一套机制。这套机制将菜单、工具栏的按钮和它们所触发的事件分离开来,使得用户操作响应的控制更加灵活。
Action对象封装了一个操作命令。当Action被添加到菜单、工具栏上面时,用户单击这些菜单项或工具栏的按钮就会触发Action对象所代表的命令。为了显示在工具栏和菜单上,Action还包含了图标,ToolTip等信息。
Contribution由Contribution Item和Contribution Manager两部分组成。Action可以用来在工具栏和菜单栏上添加Contribution Item,而利用Action所包含的图标等信息显示工具栏或菜单栏的工作是由Contribution Item来完成的。Contribution Manger是包含了许多Contribution Item的集合。Contribution Item代表了工具栏或菜单栏中的某一项,而Contribution Manger则代表了工具栏或菜单栏。JFace中的Contribution Manger可以用来控制菜单、工具栏和状态栏。Contribution Manger会根据它所包含的Item的信息自动调整这些控件。
(有待完善,源码级别的。。。。)
5.Field Assist,字段帮助,使用它在控件附近县市提示性的标记和内容;
字段帮助(Field Assist)的目的就是为用户提供界面指导。Filed Assist提供两种功能:字段修饰(Decoration Filed),如图片、颜色等作为装饰;内容建议(Content Proposal),允许用户在控件附近弹出一个下拉框,提供用户可以选择的内容。
6.Data Binding,数据绑定,将数据模型与图形界面上的控件绑定起来,减少了程序员为了同步它们的数据而做的复杂工作。
数据绑定功能负责监听界面上所有控件和数据模型的内容,无论哪一方发生变化时都及时通知另一方。使用数据绑定技术,开发者在编写完图形界面并创建绑定后,数据绑定会负责根据变化自动同步数据模型和界面内容显示。当开发者需要获得用户输入时,可以直接访问数据模而不需要每次都编写访问界面控制的代码;当程序需要将数据展示给用户时,也只需更新模型就可以了。
发表评论
-
再说SWT中的滚动面板ScrolledComposite实现
2013-06-19 15:43 2328记得以前写过一篇关于滚动面板的文章 SWT中 Scrolle ... -
OSGi参考资料
2013-04-18 01:11 683基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1115CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13803 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14902 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13931 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1729深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 2005插入点用来定义菜单出 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 29131.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2242对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3242Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1081SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3422双击eclipse安装目录下的eclipse.exe运行后,会 ... -
SWT/JFace专题 --- SWT结构浅析
2013-02-23 17:02 1023SWT技术是一套基于Java的 ... -
Eclipse平台体系结构
2013-02-21 23:56 18941.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1487RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 868SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
在"SWT/JFace专题 --- SWT/JFace概述"中,可能涉及以下知识点: 1. SWT控件:包括Button、Text、Table、Tree、Composite等基本和复杂的控件,以及如何使用它们构建用户界面。 2. JFace数据绑定:讲解如何使用...
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
SWT-JFace-3.4-API-.chm 文件很可能是 SWT 和 JFace API 的离线文档,包含了详细的类、方法和示例,是学习和开发过程中不可或缺的参考资料。通过深入学习这个 API 文档,开发者可以充分利用 SWT 和 JFace 的功能,...
SWT/Jface开发入门指南是一篇专为初学者编写的教程,旨在帮助他们快速搭建开发环境并掌握使用SWT和JFace编写图形化应用程序的基本技巧。以下是该教程所涵盖的关键知识点: 1. **SWT和JFace简介**: - SWT全称...
本教程将涵盖 SWT/JFace 的概览、目的、许可证和平台支持、SWT 和 JFace 的区别、使用 SWT/JFace 构建 GUI 应用程序、使用 SWT/JFace 管理颜色、绘图、字体、图案等内容。 SWT/JFace 的目的: SWT/JFace 的主要...
SWT/JFace开发实例
Eclipse SWT/JFace 核心应用 带书签 Eclipse SWT/JFace
SWT (Standard Widget Toolkit) 和 JFace 是 Eclipse 开发框架中的两个重要组件,它们主要用于构建图形用户界面(GUI)。SWT 是一个底层的 GUI 工具包,它提供了与操作系统直接交互的能力,使得应用程序能够拥有原生...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们由Eclipse项目维护。本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是...
Eclipse SWT/JFace是Eclipse框架中的两个关键组件,它们为构建用户界面提供了强大的支持。SWT(Standard Widget Toolkit)是Eclipse的本机GUI库,而JFace是基于SWT构建的更高层次的抽象层,它简化了UI开发过程。 ...
SWT/JFace是Java开发图形用户界面(GUI)的两个重要库,由Eclipse基金会维护。它们被广泛用于构建桌面应用程序,尤其是与Eclipse IDE相关的项目。本学习文档旨在介绍SWT/JFace的基础知识,帮助开发者更好地理解和...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
【SWT/JFace从入门到精通】 SWT(Standard Widget Toolkit)和JFace是Eclipse平台下用于构建图形用户界面(GUI)的两个关键库。它们为Java开发者提供了丰富的控件和高级UI功能,使创建桌面应用程序变得简单而强大。...
5. 压缩包子文件的文件名称列表:"SWT-JFace-3.5-API-html",这个文件可能是压缩包内的主文件,包含了整个SWT和JFace 3.5版本的API文档。解压后,开发者可以通过打开这个HTML文件来访问完整的API指南。 在开发过程...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
基于 Java 桌面程序开发的图形库...本书主要讲解了如何使用 SWT 和 JFace 进行应用程序的开发,通过本书系统而全面的 SWT/JFace 知识学习,将帮助读者快 速开发出完美、实用的 GUI 程序,轻松完成繁琐的界面、菜单编程.
### SWT/JFace中文教程知识点详解 #### 1.1 SWT/JFace概览 - **SWT与JFace的目的**:SWT(Standard Widget Toolkit)和JFace是Eclipse平台提供的两个核心工具包,用于构建高性能的图形用户界面(GUI)。SWT主要...
王占全,苏玲 著; ISBN:7-121-05152-4 学习 SWT/JFace 的好书!
在"SWT-JFace-3.4-API-.chm"这个帮助文档中,你会找到以下关键知识点: 1. **SWT组件**:包括各种基本和复杂控件,如Button、Label、Text、Shell、Composite等。每个控件都有其特定的属性、方法和事件。 2. **事件...