《Java程序案例教程》课件第13章_第1页
《Java程序案例教程》课件第13章_第2页
《Java程序案例教程》课件第13章_第3页
《Java程序案例教程》课件第13章_第4页
《Java程序案例教程》课件第13章_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

第13章图形用户界面设计13.1GUI概述

13.2组件的创建与使用

13.3布局管理器

13.4事件处理

13.1GUI概述

通过图形用户界面(GraphicsUserInterface,GUI),用户和程序之间可以方便地进行交互。Java语言提供了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件,以实现图形用户界面的设计。

Java语言中,设计和实现GUI主要分为以下3个步骤:

(1)创建组件(Component):建立可以显示的元素。

(2)指定布局(Layout):排列组件位置。

(3)响应事件(Event):与用户产生交互。为了完成上述工作,Sun为我们提供了两个专门的工具包:一个是抽象窗口工具包(AbstractWindowToolkit,AWT),另一个是Swing包。下面根据包产生的先后顺序来逐一介绍。AWT包是为Java程序提供的建立图形用户界面的工具集,可用于Java的Applet和Application中。它的功能包括:用户界面组件、事件处理模型、图形和图像工具(包括形状、颜色和字体类)、布局管理器等。AWT是Swing的基础,Swing的产生原因主要是AWT不能满足图形化用户界面发展的需要。随着发展的需要,Sun公司在Java1.2版中推出了新的用户界面库Swing。相对于AWT来说,Swing功能更强大,使用更方便,它的出现使得Java的图形用户界面上了一个台阶。Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(Light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。

Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其他特性。但是Swing并没有代替AWT。在Java1.1版中,AWT事件处理模型有了根本改变。Swing使用的仍然是Java1.1版的事件处理模型。13.1.1AWT简介

Java语言的AWT包包含了许多类来支持GUI设计。AWT提供了用于所有JavaApplets及应用程序的基本GUI组件,还为应用程序提供了与机器无关的界面,从而保证了一台计算机上出现的内容与另一台上的内容相一致。

前面已介绍过,超类可以扩展,其属性是可继承的。另外,类可以被抽象化,这就是说,它们是可被分成子类的模板,子类用于类的具体实现。显示在屏幕上的每个GUI组件都是抽象类组件的子类。也就是说,每个从组件类扩展的图形对象都与允许它们运行的大量方法和实例变量共享。Container是Component的一个抽象子类,它允许其他组件被嵌套在里面。这些组件也可以是允许其他组件被嵌套在里面的容器,于是就创建了一个完整的层次结构。在屏幕上布置GUI组件时,Container是很有用的。Panel是Container的最简单的类。Container的另一个子类是Window。AWT由Java语言的java.awt提供,该包中有许多用来设计GUI的组件类,如按钮、菜单、列表、文本框等组件类,同时它还包括窗口、面板等容器。AWT是Java语言进行GUI程序设计的基础。13.1.2Swing简介

Swing是Java基础类库(JavaFoundationClass,JFC)提供的新的图形界面类库。在JFC的新特性中,Swing是其中最主要的部分。Swing为基于窗体的应用开发设计提供了一套精美、丰富的基本组件以及一个能使图形用户界面独立于特定平台的显示框架。用Swing组件设计的程序比用AWT设计的程序具有更加优美的外观感受。

Swing是一个扩展的AWT,它提供了一个远大于AWT的综合的组件集合,并引入了新的概念和性能。

javax.swing包中定义了两种类型的组件:顶层容器(即重量级组件)(JFrame、JApplet、JDialog、JWindow)和轻量级组件。Swing组件从AWT的Container类继承而来,轻量级组件是除顶层容器外的“J”类组件,它们是继承AWTContainer类的JComponent类及其子类。与AWT比较,Swing提供了更完整的组件,引入了许多新的特性和能力。SwingAPI是围绕着实现AWT各个部分的API构筑的,从而保证了所有早期的AWT组件仍然可以使用。 13.2组件的创建与使用

1. Frame框架

Frame是Window的一个子类,是带有标题和缩放角的窗口,继承Java.awt.Container,因此,可以用add()方法来给框架添加组件。框架的默认布局管理器就是BorderLayout,但可以用setLayout()方法来改变。框架类中的构造程序Frame(String)用由String规定的标题来创建一个新的不可见的框架对象。当它还处于不可见状态时,将所有组件添加到框架中。Frame类是顶层容器,具有以下特点:

(1) Frame类是Window类的直接子类。

(2) Frame对象显示的效果是一个窗口,带有标题和尺寸。

(3) Frame被默认为初始化是不可见的,可以使用setVisible(true)方法使之可见。

(4) Frame默认的布局管理器是BorderLayout,可以使用setLayout()方法改变默认布局。

Frame类的常用构造方法如下:

Framef1=newFrame();

Framef2=newFrame(Strings);//s为框架标题图13-1JPanel效果图在开发中可以使用JPanel完成一些复杂的界面设计。

6. JScrollPane

在一般的图形界面中,如果显示的区域不够大,往往会出现滚动条以方便用户浏览,在Swing中JScrollPane的主要功能就是为显示的内容加入水平滚动条。

JScrollPane主要由JViewPort和JScrollBar两部分组成,前者主要用于显示一个矩形区域以便于用户浏览,而后者主要用于形成水平或者垂直的滚动条。图13-2JScrollPane效果图 13.3布 局 管 理 器

要为应用程序设计精美的外观,设计和控制窗口组件在容器中的位置和相互关系,就必须学习布局设计的知识。Java语言的GUI界面设计中,布局控制是一个相当重要的环节。将一个组件加入容器中时,布局管理器控制决定了所加入组件的大小和位置。当容器大小改变时,布局管理器能自动地改变其中组件的大小和位置。

Java.awt包定义了5个布局管理类,每个布局管理类对应一种布局策略,这5个布局管理类分别是FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。

1. FlowLayout布局管理器

FlowLayout属于流式布局管理器,使用此种布局方式,所有的组件会像流水一样依次排列。

图13-3FlowLayout布局管理器

2.BorderLayout布局管理器

BorderLayout将一个窗体的版面划分成东、西、南、北、中五个区域,如图13-4所示。可以直接将需要的组件放到五个区域。图13-4BorderLayout布局管理器

3.GridLayout布局管理器

GridLayout布局管理器是以表格的形式进行管理的,如图13-5所示。在使用此布局管理器的时候必须设置显示的行数和列数。图13-5GridLayout布局管理器

4.CardLayout布局管理器

CardLayout就是将一组组件彼此重叠地进行布局,就像一张张卡片一样,这样每次只会展现一个界面。

5.GridBagLayout布局管理器

以上的布局管理器都是依靠专门的工具完成的,在Java中也可以通过GridBagLayout布局管理器的方式完成,如图13-6所示。图13-6GridBagLayout布局管理器

13.4事件处理

前面介绍了如何放置各种组件,使图形界面更加丰富多彩,但是还不能响应用户的操作,要让图形界面接收用户的操作,就必须给各个组件加上事件处理机制。事件表达了程序、系统及使用程序的用户之间的动作。当用户做某些事情(例如用户在程序窗口中单击鼠标)

温馨提示

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

评论

0/150

提交评论