JavaSwing图形界面开发(第1章).ppt_第1页
JavaSwing图形界面开发(第1章).ppt_第2页
JavaSwing图形界面开发(第1章).ppt_第3页
JavaSwing图形界面开发(第1章).ppt_第4页
JavaSwing图形界面开发(第1章).ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2,联系方式,TelE_mail: ,3,选用教材,出版社:清华大学出版社 作者:王鹏、何昀峰,4,参考教材,5,成绩评定,6,课程学习基础, Java编程经验; 操作系统、软件工程等知识; 面向对象概念。,7,先导知识, GUI(Graphical User Interface) 含义:图形用户界面或图形用户接口; 说明: 以图形方式显示的用户操作界面。 与早期命令行界面相比,在视觉上更易于接受。 目前大多数操作系统、面向对象的开发工具、 众多应用系统等均采用了GUI。,8,命令行界面,9,图形用户界面,10,GUI的广泛应用是计算机发展的重大成就之一, 极大方便了操作,使得不再需要死记硬背大量的操作命令。 取而代之的是:通过窗口、菜单、鼠标、按钮等方式来方便地进行软件操作。 另外,还有“嵌入式”GUI。,GUI特点,11,GUI的组成, 桌面-界面中的最底层(顶层容器),可设置背景; 视窗-应用程序为使用数据而在图形用户界面中设置的基本单元; 单一文件界面-一个数据在一个窗口内完成的方式。(切换) 多文件界面-在一个窗口内进行多个数据管理的方式; 标签-多文件界面的数据管理方式中使用的一种界面;(数据标题) 菜单-将系统可以执行的命令以层次方式显示出来的一种界面; 图标-表示数据内容或与数据相关联的应用程序的图形标志; 按钮-以图形所表示的利用程度高的命令。,12,GUI的准则, 减少用户的认知负担; 保持界面的一致性; 满足不同目标用户的创意需求; 用户界面友好性; 图标识别平衡性; 图标功能的一致性; 建立界面与用户的互动交流; 人性化的视觉优化; 识别性的图标及其它元素; 可操控性和扩充性的易用性; 企业品牌特色的视觉识别性。,13,14,JAVA图形界面设计开发工具概述,当前,我们操作计算机或使用各类软件时,在屏幕上能看到各种各样的“界面”,它们都是由各种各样的“组件”构成的,每一种组件都有自身的绘制方式,这些组件怎么绘制,系统中都已经封装好了,我们只需要做简单的调用即可。 我们需要了解的是在Java中可以使用什么界面组件库,是一种还是有很多种呢,下面我们来作个简单介绍。,15,Java世界中,目前最知名的三大GUI库分别是: 1、AWT(Abstract Window Toolkit ) -抽象窗口工具集,包含于所有的Java SDK中。 2、Swing高级图形库 -Java开发工具集,包含于Java2 SDK中(JDK); -JDK正式名称为J2SDK(Java2 Software Develop Kit)。 3、SWT (Standard Widget Toolkit ) -标准窗口部件库; -来自于IBM Eclipse开源,不包含于JDK中; -需要从Eclipse单独下载。,三大GUI组件库,16,一、AWT介绍, 出现于Java1.x中,是Java初期所内置的一种面向窗口应 用的库,作为JDK的一部分,是Java基本类(JFC)的核心; 在Java1.0中,AWT最初的设计目标:提供一个用来建立图 形用户界面的独立平台,辅助程序员构造一个通用的GUI, 使其在所有平台上都能正常显示(与平台无关),但这个目 标并没有很好的实现; 这种情况从Java1.1以后得到较大改进,并且从Java1.2开 始,AWT添加了被称为“Swing”的新GUI库。,17,1、AWT的特点,通过对操作系统自身的界面组件实现,来完成界面渲染, 即本质上是调用操作系统“自身提供”的界面组件库。 我们知道,操作系统很多界面组件库是由C或C+编写的,Java本身不能直接调用。为了能方便调用,在Java中已封装成相关API,直接调用即可,变得相对简单一些。 优点:这套组件的种类较少,速度较快(显示效率较高)。 既然AWT需要调用操作系统的界面组件,由此引出一个概念-对等模式(对等体、对等组件)。,18, 图形用户界面的跨平台移植比较困难 -在不同系统平台上创建的组件,外观和感觉(look&feel)不一样。 AWT采用对等设计模式 -对每个组件(抽象组件)都引入一个对等体(peer)。 对等体:一种具有“本地”外观和感觉的GUI组件,负责本地计算机 的显示和管理工作,听从抽象组件的指挥。 或者通俗的说,对等组件就是指底层平台(如Windows操作系统)所实现的图形用户界面组件,因为操作系统本身也提供了窗体、对话框、按钮、菜单等组件。,2、AWT的对等模式,19,Java AWT,Windows操作系统,AWT对等模式理解示意图,20,所以用AWT构造的Java应用程序,在Windows系统上运行将保持Windows的GUI风格,而拿到Sun工作站上运行则将具有Motif图形用户界面的风格。 -通过对等体构造与平台无关的GUI。,21,AWT对等模式结构关系图,对等设计模式:通过Java封装的API,将AWT组件直接对应到当前 运行平台上的一个“等同或类似”的组件上。,22,23,AWT对等模式的作用,在不同系统平台的“两个控件之间”建立一个相互作用的联系,而充当纽带的则是Java虚拟机和虚拟机-GDI的接口。 因此,AWT首先需要经过通用的Java技术来控制图形、事件等,然后Java虚拟机再将请求传送到当前平台的“图形和组件接口”去交互。 (显示),24, Java虚拟机 Java Virtual Machine,简称JVM。 JVM是一个想象中的机器,在实际的计算机上通过软件模拟来实现。其有自己想象中的硬件(如处理器、堆栈、寄存器等),还具有相应的指令系统。 GDI Graphics Device Interface,图形设备接口。 负责系统与绘图程序之间的信息交换,处理所有程序在当前平台上的图形输出。,两个概念,25,Java虚拟机的特点,Java语言的一个重要特点:与平台的无关性。 -使用Java虚拟机是实现这一特点的关键。 一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。这是因为Java虚拟机屏蔽了与具体平台相关的信息,使Java语言的编译程序只需生成在Java虚拟机上运行的目标代码(字节码),即可在多种平台上不加修改地运行。 Java 虚拟机在执行字节码时,将字节码解释成具体平台上的机器指令予以执行。,26,4、AWT对等模式的缺陷,因为AWT通过“虚拟机”和“虚拟机-GDI”两个层次来完成一个操作,经过的交互层次较多,速度和效率较慢。 因此,AWT对等模式的致命弱点: 效率不高,移植性差!,27,5、AWT的组件,具有对等体的组件称为“重量组件(heavyweight components)”。 最初的AWT只包含重量组件,重量组件除拥有本地对等体特点外,另一个明显特点是一个不透明的矩形区域(opaque rectangular region),因此它将覆盖屏幕上该区域内的图形和组件。,28,AWT中的组件都是重量组件,或者说AWT组件都是对本地操作系统对等组件的“封装”。 重量组件的缺陷是开销大、效率低,每个组件都要单独调用底层操作系统的功能来独立绘制(显示),相当于在屏幕上开凿了许多个独立的窗口,因此没有办法实现组件的透明效果。 而且重量组件受到底层平台对等组件的限制,毕竟只是封装和调用了现有的组件,因此具有严重的平台相关性,即在不同操作系统上显示同一组件有可能不一致。,29,正是由于AWT对等模式的体系结构存在的问题,不能完全保证在各种平台上组件的“外观和感觉”都一样。因此,1997年SUN和Netscape合作推出了JFC(Java Foundation Classes)-Java基础类库。 JFC专指用于创建图形用户界面的Java API,包括AWT、Java2D API(二维绘图API)、Swing组件集。,30,JFC的核心部分是Swing用户界面组件,使用大量“轻量组件(lightweight components)”替代AWT中的重量组件。 轻量组件是不具有对等体的组件,且是完全透明的(non-opaque)。 实际上,轻量组件是通过Java绘图技术,在其所处的“容器”上绘图得到的(画出来的),因此轻量组件可以实现绘图的效果,容易实现在不同操作系统平台上表现的一致性。而且组件的绘制和事件处理开销比重量组件小得多,因而轻量组件可以实现较高的程序运行效率。,31,由于轻量组件不是自己“单独占有一个窗口”,最终还是要包含或绘制在别的组件上,因此Swing组件中几个顶级容器,如JFrame、JDialog、JApplet等都采用了重量组件作为顶级窗体,而其它都采用轻量组件。 我们从组件的运行效果上肉眼看不出有什么不同,但在实际开发中,除了顶层容器只能采用这种重量组件之外,内部并不建议重量或轻量组件的混用(不提倡AWT和Swing的组件混用),因为这样会导致兼容性的问题。,32,可视化组件 凡是能够看得见,或有一定形状、尺寸、显示效果的组件,都可称为可视化组件。 相对于可视化组件也可以引入非可视化组件,不过非可视化组件应用较少,如我们在AWT工具集中使用的布局管理器FlowLayout、BorderLayout等,它们也起到了组件或组件在容器内布局的角色,但由于本身是不可见的,所以称之为非可视化组件。,33,AWT作为Java开发工具包(JDK)的组成部分,是Java基本类(JFC)的核心,主要是为用户提供“基本的界面组件”。 AWT包含四个主要的类: 组件类(Component) 容器类(Container) 图形类(Graphics) 布局管理器类(LayoutManager),34, 组件类(Component) -包含菜单、按钮、列表等组件的抽象基本类。 容器类(Container) -扩展Component的抽象基本类。 -由Container派生的类有Panel、Applet、Window、Dialog 、Frame类等。(在容器中可以包含多个组件) 图形类(Graphics) -定义组件内图形操作的基本类。 每个组件都有一个相关的图形对象。 布局管理器类(LayoutManager) -定义容器中组件的位置和尺寸的接口。 (Java中定义了几种默认的布局管理器),35,表:AWT中的软件包,36,AWT类间的关系,组件类、容器类、布局管理器类构成了AWT中的简单基础关系。 容器中可以包含组件; 所有的容器都包含布局管理器,用来指定容器中组件的位置和形状。 图形类提供在组件中显示文本和图形的方法。 AWT中许多操作都发生在组件、容器和布局管理器之间。,37, AWT组件类,组件(Component)是图形用户界面的基本组成元素,凡是能以图形化方式显示在屏幕上,并能够与用户进行交互(被用户操作)的对象都是组件。 如:菜单、按钮、标签、文本框、滚动条等。 组件不能独立显示出来,必须将组件放在一定的容器中才可以显示出来。,38,!组件(Component)是构成AWT的基础。 AWT中包括大量组件,其中多数类是由java.awt.Component类扩展而来的。 java.awt.Component是一个抽象类,是除菜单相关组件之外所有AWT组件类的根父类,Component类中定义了大量的属性和方法 ,这些属性和方法规定了GUI组件的基本特性,如尺寸、位置、颜色、字体等等,这些方法也实现了作为一个GUI部件所应具备的基本功能。 同时,它也为其派生类提供了许多功能。(继承),39,组件类的层次(继承)结构,40, AWT容器类,从java.awt.Container类扩展的类称为容器,Container也是一个从Component扩展的抽象类。 顾名思义,容器就是用来包含组件的。一个容器可以包含多个组件,也可以使用容器将相关组件关联在一起,成为一个整体。(使用方法add()添加组件到当前容器中) 合理的使用容器可以简化图形界面的设计,而且对组件的显示安排也很有用。 AWT中有两种主要的容器类型: Java.awt.window Java.awt.panel,41,表:从java.awt.Container类派生的AWT常用容器,42, AWT布局管理器类,容器只能记录包含的组件,而布局管理器则负责指定容器中“组件的位置和大小”。 Java的布局管理器只需要确定组件与其它组件的相对位置,而不需要决定它的坐标,这样的安排使得与平台无关的用户界面更易于实现。 AWT中提供了五种布局管理器: BorderLayout(区域) CarderLayout(卡片栈 ) FlowLayout(顺序) GridLayout(网格) GridBagLayout(网格包),43, BorderLayout 将容器划分为东、南、西、北、中五个区域,当添加组件到容器中时,需指明放置到哪一个区域中。 CarderLayout 将容器当作一个卡片栈,添加到容器中的每个组件都被放置在一个单独的卡片上,但每次只能显示一张卡片。 FlowLayout 将添加到容器中的组件,按从上到下,从左到右的顺序依次排列。,44, GridLayout 将容器分成相同尺寸的网格,添加到容器中的组件按从左到右、从上到下的顺序放置在每一个网格中。 GridBagLayout 也是将容器分成网格,与GridLayout区别是,一个组件可以占据不止一个网格的位置。,45,Swing的引入,通过以上对AWT的介绍,我们基本明白了Sun为什么要用Swing来让我们离开AWT的主要原因。 因为,既然是对等模式,那么AWT就必须使用所有“操作系统的图形接口功能”的交集,但由于AWT的接口只有一套。所以,为了保证移植性,就只能使用所有操作系统都能够支持的最少特性。 因此,我们经常抱怨AWT的功能太少,图形太难看等等,这实际是为了保证移植性而做出的牺牲。,46,从Java2,即Java1.2版本开始,Sun开始在JDK中提供一套“新的图形界面接口系统Swing”。 Swing是基于AWT基本结构,创建的二级用户界面工具集,提供了一整套GUI组件。,47,Swing是建立在AWT基础上的一种增强型的Java GUI组件(工具集、工具包),主要是使用“轻量组件”替代AWT中绝大多数“重量组件”;界面组件的渲染完全由Java自身完成,而不是调用操作系统的界面组件实现,是由Java自己绘制完成的。 这样做的好处是程序在对组件的调用上完全Java化,较少掺合其它语言,有利于跨平台。 而AWT是调用操作系统的对等界面组件,因此在某些时候会受到平台的限制。,48, 库中组件种类比较丰富,速度上稍有欠缺 用程序进行界面开发,首先需要认识界面中的各种元素(对象); 元素(对象)又对应各自的类,所以需用各自的类构造出各自的对象;再将这些对象以某种方式组合在一起(布局),让它们显示出来,这就是我们看见的界面。 不同的组件库提供了对各种界面组件元素不同的实现类 如“按钮”,AWT中提供的类Button,Button类将用来实现按钮的功能,若要显示按钮,就需要用Button类构造一个对象,这个对象就是要在界面上显示的一个组件。而在Swing中对按钮提供的是JButton类。 所以不同的界面组件库中,对界面组件的实现类也有所不同。,但也因此存在缺点,49,Java Swing有何特点? 如何运用Swing进行图形界面开发?,50,第1章 Java Swing概述,Java Swing已成为图形界面开发的主要工具之一,相对于AWT技术而言,Java Swing更为丰富。 本课程通过对Java Swing的发展史、功能、特性等方面的介绍,了解Java Swing之所以成为图形开发主流工具的原因。 重点:在应用Java Swing进行图形开发过程,可熟练应用Swing工具包中提供的各种API。,51,1.1 什么是Java Swing,Swing是一个用于开发Java图形界面应用程序的工具包(集),以抽象窗口工具包(AWT)为基础,使跨平台的应用程序能使用任何可插拔(定制)的外观风格。 开发人员只需使用少量代码,即可利用Swing包中丰富、灵活的“功能”和“模块化的组件类”,开发出令人满意的用户界面。,52,1.1.1 Swing的发展史,由于Swing是以AWT为基础,所以认识Swing之前,需要对AWT有一定了解: AWT是Abstract Window Toolkit(抽象窗口工具集)的简称。在AWT 包中拥有很多组件类,这些组件类是开发图形界面程序的基础。 Swing是在AWT基础上,对AWT的组件进行修改和升级,避免了在运 用AWT开发中遇到的一些问题。 因此,AWT被Swing取代的主要原因:AWT工具集中的“组件类”已经不能满足众多软件系统中,对图形化界面的应用要求。,53, AWT并非专门为用户界面(UI)工具包设计,其初衷是用于开发小型应 用程序中的图形界面。因此,针对图形界面开发的功能较少,并且很 多重要功能都不具备。如剪贴板、打印支持、键盘导航等特性,甚至 没有“弹出式菜单”或“滚动窗格”的基本特性。 由于AWT存在较高的错误率,涌现出了其它一些用于图形界面开发的工 具包,如IFC - Internet Foundation Classes。 (IFC是一组建立在NEXTSTEP平台上的轻量组件类),54,55,1.1.2 Swing的功能,通过与AWT的比较,了解Swing的相关功能: AWT具有与本地图形界面进行交互的接口 AWT中的图形函数与操作系统所提供的图形函数之间具有一一对应关系。(对等) 即,当使用AWT工具集创建图形用户界面时,实际上就是在使用“本地操作系统”所提供的“图形库”来绘制图形界面。,56, AWT的对等模式导致移植性差 由于“不同操作系统的图形库”所提供的功能不一样,在一个平台上存在的功能,可能在另一个平台上不存在。 因此,为实现java语言“一次编译,到处运行”的概念,AWT只能通过牺牲功能来实现平台无关性。即AWT所提供的图形功能是“各种不同操作系统”所提供的图形功能的交集。 也正是由于AWT采用这种“依靠本地操作系统的对等方法”来实现其功能,所以AWT控件都是重量级控件。,57, Swing为纯Java实现,不依赖于操作系统,移植性较强 Swing是在AWT基础上发展起来的一套新的图形界面开发工具,不仅提供了AWT提供的所有组件,而且用纯粹的Java代码对AWT的组件进行了扩充。(如树型组件) 因此,在一个平台上设计的组件可在其它平台上使用,所以通常将Swing组件称为轻量级组件。(除少数顶级容器外) 不依赖操作系统的支持,是与AWT组件的最大区别。,Swing的功能:,58, “swing包”是Java Swing提供的最大的包 内含近100个类和25个接口,几乎所有Swing组件都在swing包中。 Swing组件均以“J”开头 除有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox) 、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合。 如表格(JTable)、树(JTree)。 漏写“J”,有时也能运行,但有可能造成视觉与行为的不一致。,1.1.3 Swing的特性,59, 支持键盘操作 在Swing组件中,使用JComponent类的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论