您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > SWT图形界面开发(第1章)
SWT图形用户界面设计2SWT图形用户界面设计3选用教材原书名:SWT:ADeveloper'sNotebook原出版社:O'Reilly作者:(美)TimHatton译者:O'ReillyTaiwan公司出版社:东南大学出版社4参考教材EclipseSWT/Jface核心应用作者:强锋科技、那静出版社:清华大学出版社5课程学习基础◆Java编程经验;◆操作系统、软件工程等知识;◆面向对象概念。6先导知识◆GUI(GraphicalUserInterface)含义:图形用户界面或图形用户接口;说明:●以图形方式显示的用户操作界面。●与早期命令行界面相比,在视觉上更易于接受。●目前大多数操作系统、面向对象的开发工具、众多应用系统等均采用了GUI。7命令行界面8图形用户界面9GUI的广泛应用是计算机发展的重大成就之一,极大方便了操作,使得不再需要死记硬背大量的操作命令。取而代之的是:通过窗口、菜单、鼠标、按钮等方式来方便地进行软件操作。另外,还有“嵌入式”GUI。GUI特点10GUI的组成●桌面---界面中的最底层(顶层容器),可设置背景;●视窗---应用程序为使用数据而在图形用户界面中设置的基本单元;●单一文件界面---一个数据在一个窗口内完成的方式。(切换)●多文件界面---在一个窗口内进行多个数据管理的方式;●标签---多文件界面的数据管理方式中使用的一种界面;(数据标题)●菜单---将系统可以执行的命令以层次方式显示出来的一种界面;●图标---表示数据内容或与数据相关联的应用程序的图形标志;●按钮---以图形所表示的利用程度高的命令。11GUI的准则●减少用户的认知负担;●保持界面的一致性;●满足不同目标用户的创意需求;●用户界面友好性;●图标识别平衡性;●图标功能的一致性;●建立界面与用户的互动交流;●人性化的视觉优化;●识别性的图标及其它元素;●可操控性和扩充性的易用性;●企业品牌特色的视觉识别性。12◆API(ApplicationProgrammingInterface)含义:应用程序接口;说明:软件系统中,不同组成部分之间衔接的约定;理解:一些预先定义的函数,是提供应用程序与开发人员以访问例程的能力,而又无需访问源码。(内部工作机制的细节)分解子系统1(模块1)子系统n(模块n)软件规模接口设计依赖耦合内聚移植维护扩展13JAVA图形界面设计开发工具概述当前,我们操作计算机或使用各类软件时,在屏幕上能看到各种各样的“界面”,它们都是由各种各样的“组件”构成的,每一种组件都有自身的绘制方式,这些组件怎么绘制,系统中都已经封装好了,我们只需要做简单的调用即可。我们需要了解的是在Java中可以使用什么界面组件库,是一种还是有很多种呢,下面我们来作个简单介绍。14Java世界中,目前最知名的三大GUI库分别是:1、AWT(AbstractWindowToolkit)---抽象窗口工具集,包含于所有的JavaSDK中。2、Swing高级图形库---Java开发工具集,包含于Java2SDK中(JDK);---JDK正式名称为J2SDK(Java2SoftwareDevelopKit)。3、SWT(StandardWidgetToolkit)---标准窗口部件库;---来自于IBMEclipse开源,不包含于JDK中;---需要从Eclipse单独下载。三大GUI组件库15一、AWT介绍◆出现于Java1.x中,是Java初期所内置的一种面向窗口应用的库,作为JDK的一部分,是Java基本类(JFC)的核心;◆在Java1.0中,AWT最初的设计目标:提供一个用来建立图形用户界面的独立平台,辅助程序员构造一个通用的GUI,使其在所有平台上都能正常显示(与平台无关),但这个目标并没有很好的实现;◆这种情况从Java1.1以后得到较大改进,并且从Java1.2开始,AWT添加了被称为“Swing”的新GUI库。161、AWT的特点通过对操作系统自身的界面组件实现,来完成界面渲染,即本质上是调用操作系统“自身提供”的界面组件库。我们知道,操作系统很多界面组件库是由C或C++编写的,Java本身不能直接调用。为了能方便调用,在Java中已封装成相关API,直接调用即可,变得相对简单一些。优点:这套组件的种类较少,速度较快(显示效率较高)。既然AWT需要调用操作系统的界面组件,由此引出一个概念---对等模式(对等体、对等组件)。17◆图形用户界面的跨平台移植比较困难---在不同系统平台上创建的组件,外观和感觉(look&feel)不一样。◆AWT采用对等设计模式---对每个组件(抽象组件)都引入一个对等体(peer)。对等体:一种具有“本地”外观和感觉的GUI组件,负责本地计算机的显示和管理工作,听从抽象组件的指挥。或者通俗的说,对等组件就是指底层平台(如Windows操作系统)所实现的图形用户界面组件,因为操作系统本身也提供了窗体、对话框、按钮、菜单等组件。2、AWT的对等模式18JavaAWTWindows操作系统窗体组件对话框组件按钮组件菜单组件窗体组件对话框组件按钮组件菜单组件×APIAPIAPIAPIAWT对等模式理解示意图19所以用AWT构造的Java应用程序,在Windows系统上运行将保持Windows的GUI风格,而拿到Sun工作站上运行则将具有Motif图形用户界面的风格……。---通过对等体构造与平台无关的GUI。20AWT对等模式结构关系图对等设计模式:通过Java封装的API,将AWT组件直接对应到当前运行平台上的一个“等同或类似”的组件上。2122AWT对等模式的作用在不同系统平台的“两个控件之间”建立一个相互作用的联系,而充当纽带的则是Java虚拟机和虚拟机-GDI的接口。因此,AWT首先需要经过通用的Java技术来控制图形、事件等,然后Java虚拟机再将请求传送到当前平台的“图形和组件接口”去交互。(显示)23◆Java虚拟机JavaVirtualMachine,简称JVM。JVM是一个想象中的机器,在实际的计算机上通过软件模拟来实现。其有自己想象中的硬件(如处理器、堆栈、寄存器等),还具有相应的指令系统。◆GDIGraphicsDeviceInterface,图形设备接口。负责系统与绘图程序之间的信息交换,处理所有程序在当前平台上的图形输出。两个概念24Java虚拟机的特点Java语言的一个重要特点:与平台的无关性。---使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。这是因为Java虚拟机屏蔽了与具体平台相关的信息,使Java语言的编译程序只需生成在Java虚拟机上运行的目标代码(字节码),即可在多种平台上不加修改地运行。Java虚拟机在执行字节码时,将字节码解释成具体平台上的机器指令予以执行。254、AWT对等模式的缺陷因为AWT通过“虚拟机”和“虚拟机-GDI”两个层次来完成一个操作,经过的交互层次较多,速度和效率较慢。因此,AWT对等模式的致命弱点:效率不高,移植性差!265、AWT的组件具有对等体的组件称为“重量组件(heavyweightcomponents)”。最初的AWT只包含重量组件,重量组件除拥有本地对等体特点外,另一个明显特点是一个不透明的矩形区域(opaquerectangularregion),因此它将覆盖屏幕上该区域内的图形和组件。27AWT中的组件都是重量组件,或者说AWT组件都是对本地操作系统对等组件的“封装”。重量组件的缺陷是开销大、效率低,每个组件都要单独调用底层操作系统的功能来独立绘制(显示),相当于在屏幕上开凿了许多个独立的窗口,因此没有办法实现组件的透明效果。而且重量组件受到底层平台对等组件的限制,毕竟只是封装和调用了现有的组件,因此具有严重的平台相关性,即在不同操作系统上显示同一组件有可能不一致。28正是由于AWT对等模式的体系结构存在的问题,不能完全保证在各种平台上组件的“外观和感觉”都一样。因此,1997年SUN和Netscape合作推出了JFC(JavaFoundationClasses)---Java基础类库。JFC专指用于创建图形用户界面的JavaAPI,包括AWT、Java2DAPI(二维绘图API)、Swing组件集。29JFC的核心部分是Swing用户界面组件,使用大量“轻量组件(lightweightcomponents)”替代AWT中的重量组件。轻量组件是不具有对等体的组件,且是完全透明的(non-opaque)。实际上,轻量组件是通过Java绘图技术,在其所处的“容器”上绘图得到的(画出来的),因此轻量组件可以实现绘图的效果,容易实现在不同操作系统平台上表现的一致性。而且组件的绘制和事件处理开销比重量组件小得多,因而轻量组件可以实现较高的程序运行效率。30由于轻量组件不是自己“单独占有一个窗口”,最终还是要包含或绘制在别的组件上,因此Swing组件中几个顶级容器,如JFrame、JDialog、JApplet等都采用了重量组件作为顶级窗体,而其它都采用轻量组件。我们从组件的运行效果上肉眼看不出有什么不同,但在实际开发中,除了顶层容器只能采用这种重量组件之外,内部并不建议重量或轻量组件的混用(不提倡AWT和Swing的组件混用),因为这样会导致兼容性的问题。31可视化组件凡是能够看得见,或有一定形状、尺寸、显示效果的组件,都可称为可视化组件。相对于可视化组件也可以引入非可视化组件,不过非可视化组件应用较少,如我们在AWT工具集中使用的布局管理器FlowLayout、BorderLayout等,它们也起到了组件或组件在容器内布局的角色,但由于本身是不可见的,所以称之为非可视化组件。32AWT作为Java开发工具包(JDK)的组成部分,是Java基本类(JFC)的核心,主要是为用户提供“基本的界面组件”。AWT包含四个主要的类:●组件类(Component)●容器类(Container)●图形类(Graphics)●布局管理器类(LayoutManager)33◆组件类(Component)---包含菜单、按钮、列表等组件的抽象基本类。◆容器类(Container)---扩展Component的抽象基本类。---由Container派生的类有Panel、Applet、Window、Dialog、Frame类等。(在容器中可以包含多个组件)◆图形类(Graphics)---定义组件内图形操作的基本类。每个组件都有一个相关的图形对象。◆布局管理器类(LayoutManager)---定义容器中组件的位置和尺寸的接口。(Java中定义了几种默认的布局管理器)34表:AWT中的软件包35AWT类间的关系组件类、容器类、布局管理器类构成了AWT中的简单基础关系。◆容器中可以包含组件;◆所有的容器都包含布局管理器,用来指定容器中组件的位置和形状。◆图形类提供在组件中显示文本和图形的方法。AWT中许多操作都发生在组件、容器和布局管理器之间。36①AWT组件类组件(Component)是图形用户界面的基本组成元素,凡是能以图形化方式显示在屏幕上,并能够与用户进行交互(被用户操作)的对象都是组件。如:菜单、按钮、标签、文本框、滚动条等。组件不能独立显示出来,必须将组件放在一定的容器中才可以显示出来。37!组件(Component)是构成AWT的基础。AWT中包括大量组件,其中多数类是由java.awt.Component类扩展而来的。java.awt.Component是一个抽象类,是除菜单相关组件之外所有AWT组件类的根父类,Component类中定义了大量的属性和方法,这些属性和方法规定了GUI组件的基本特性,如尺寸、位置、颜色、字体等等,这些方法也实现了作为一个GUI部件所应具备的基本功能。同时,它也为其派生类提供了许多功能。(继承)38组件类的层次(继承)结构39②AWT容器类从java.awt.Con
本文标题:SWT图形界面开发(第1章)
链接地址:https://www.777doc.com/doc-3854853 .html