2024年5月16日发(作者:)
第4章 图形用户界面设计
本章要点
Java图形用户界面设计的基本知识
布局管理器的应用
Java常用图形用界面设计组件的应用
Java常用组件事件处理的应用
4.1 认识AWT包和Swing包
用户界面是计算机用户与软件之间的交互接口。一个功能完善,使用方便的用户界面可
以使软件的操作更加简单,使用户与程序之间的交互更加有效。因此图形用户界面(graphics
user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。
Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)
和Swing两部分。这两部分功能由Java的两个包来完成-awt和swing。虽然这两个包都是
用于图形用户界面的开发,但是它们不是同时被开发出来了。awt包是最早被开发出来的。
但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。比如awt包所
包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。这种设计是
站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。这样做的
最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。
由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开
发出了Swing,即swing包。但是,SUN公司并没有让swing包完成替代awt包,而是让这
两个包共同存在,互取所需。awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户
界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。
Java有两个主要类库分别是Java包和Javax包。在Java包中存放的是Java语言的核心
包。Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。
swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放
在Java包下的。虽然swing是扩展包,但是,现在的图形用户界面基本都是基于swing包
开发的。
swing包的组件大部分是采用纯Java语言进行开发的,这就大大增加了组件的可操作性,
尤其是组件的外观。通常情况下,只要通过改变所传递的参数的值,就可以改变组件的外观。
而且swing包还提供Look and Feel功能,通过此功能可以动态改变外观。Swing包中也有一
些组件不是用纯Java语言编写的,这些组件一般用于直接和操作系统进行交互的。
4.2 布局管理器
在本节中将对图形用户界面中的布局管理器进行介绍。
【任务
1
】认识图形用户界面。
1.
基础知识
先来看一个用Java语言编写的图形用户界面的例子,如图4-1所示。
图4-1 一个图形用户界面
图4-1是一个帮助文件的用户界面。通过这个界面,我们来介绍三个与图形用户界面有
关的术语。
(1) 组件:构成图形用户界面的各种元素称为组件。图4-1中,放在“帮助窗口”中的
每个一信息都是一个组件。例如“确定”按钮就是一种组件。
(2) 容器:是图形用户界面中容纳组件的部分,一个容器可容纳一个或多个组件,甚至
可以容纳其他容器。窗口就是一种容器。例如图4-1中的组件全部都是放在“帮助窗口”这
个容器中的。容器与组件的的关系就像杯子和水的关系。需要说明的是,容器也可以被称为
组件。
(3) 布局管理器:组件在被放到容器中时,要遵循一定的布局方式。在Java的图形用户
界面中,有专门的类来管理组件的布局,称这些类为布局管理器。在“帮助窗口”中每一条
信息都是一个组件,这些组件应该如何安排就是由布局管理器负责的。所谓的布局管理器,
实际上就是能够对组件进行布局管理的类。
用吃饭的例子就能很好的说明这三个术语之间的关系。容器就是吃饭的桌子,组件就是
一盘盘的菜。我们放菜的时候总要安排一下哪个菜应该放在什么位置,这就是布局管理器。
2.
任务实施
本任务的代码内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import .*;
import .*;
public class FrameEx
{
public void go()
{
JFrame win = new JFrame("帮助窗口");
Container contentPane = tentPane();
out(new GridLayout(5,1));
JLabel labOne = new JLabel("计算机基础模拟练习系统的1.0",);
JLabel labTwo = new JLabel("北京信息职业技术学院",);
JLabel labThree = new JLabel("软件工程系制作",);
JLabel labFour = new JLabel("(c)版权所有2010年6月",);
JButton queding = new JButton("确定");
发布者:admin,转转请注明出处:http://www.yc00.com/web/1715816752a2676124.html
评论列表(0条)