Java语言GUI程序设计
上QQ阅读APP看书,第一时间看更新

1.3 GUI程序简述

除了在后台运行的服务类守候程序,大多数计算机程序在运行过程中都需要与用户进行交互:程序需要以某种方式从用户那里获取数据,将计算处理所获得的阶段性或最终结果以适当的形式呈现给用户,用户可能还需要对程序的运行过程以某种方式进行干预和控制。为此,需要为用户与程序提供交互的接口(UI)。当前,主流程序都以形象的图形化方式为用户提供了这种接口,称为图形用户界面(Graphical User Interface, GUI)。GUI使用户可以使用鼠标和键盘对程序的窗口、菜单、对话框等进行操作,极大地方便了非专业用户的使用,用户在视觉上更易于接受,减少了用户的认知负担,使程序的操作更加人性化。本节以微软公司的Windows系统为例,介绍GUI程序的基本组成。

1.3.1 GUI的基本组成

在GUI中,计算机屏幕上显示窗口、图标、按钮等图形表示不同的资源对象和动作,用户通过鼠标等指针设备进行选择、移动和运行程序等操作。通常有以下主要组成元素(见图1.13)。

1. 桌面

桌面指GUI操作系统显示程序、数据和其他资源的计算机屏幕。一般来说,桌面上会显示各种应用程序和数据的图标,作为用户对它们操作的入口。如在微软公司的Windows 7系统中,各种用户的桌面内容实际上保存在系统盘(默认为C盘)C:\Users\[用户名]\Desktop文件夹里。

通过设置墙纸(即桌面背景)为各种图片和某种附件,可以改变桌面的视觉效果。

2. 窗口

窗口(Window)是应用程序在图形用户界面中显示的使用界面。应用程序和数据在窗口内实现一体化。用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标、滚动条和状态栏等功能部件,一般主要数据显示在窗口中央。各种数据/应用程序的窗口设有标题栏,一般放在窗口的最上方,并设有最大化、最小化、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行相应的操作(见图1.14和图1.15)。此外,还可以使用鼠标拖动窗口标题栏移动窗口位置,拖动窗口边框改变窗口大小。

单一文档界面(Single Document Interface, SDI):一套数据在一个窗口内显示和操作的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口中使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。

多文档界面(Multiple Document Interface, MDI):在一个窗口之内进行多套数据管理的方式。这种情况下,窗口的管理简化,但是操作变为双重管理。标签和选项卡是多文档界面中数据管理的一种方式,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据(见图1.15),这样使数据管理更为便捷。

多文档界面主要是微软的Windows系统采用,在其他环境中通常用单文档界面。

图1.13 GUI主要组成

图1.14 窗口及其组成

3. 菜单

菜单是把程序提供的执行命令以分级列表的方式显示出来的用户界面(见图1.16),包括下拉式菜单、弹出式菜单等类型,应用程序提供的所有命令几乎全部能组织到菜单中。根据命令的层次还可以组织成多级菜单。使用鼠标的第一按键(一般是左键)或键盘上的组合键(如Alt+F)可以对菜单进行操作。菜单项一般是在菜单中为用户提供的一条命令接口,当用户使用鼠标单击菜单项时会引发程序的一些操作。但当菜单项显示为灰色时(如图1.16中“复制”命令),则表示在当前情形下程序不会响应用户对其单击的操作;单击带“…”的菜单项(如图1.16中“查找”命令),程序会弹出一个相应的对话框以便进一步与用户进行交互;单击带“►”的菜单项(如图1.16中“排列图标”命令)会弹出下一级菜单(称为级联菜单)。

图1.15 对话框及常用GUI组件

快捷菜单:在菜单栏以外程序窗口的工作区,通过鼠标的第二按键(一般是右键)调出的菜单称为快捷菜单。根据调出位置的不同,菜单内容也不相同,列出所关联的对象目前可以进行的常用操作。

图1.16 典型菜单

4. 工具按钮及功能区

将使用频繁的命令用图形表示出来,放置在窗口中较为显眼的位置称为工具按钮。应用程序中的按钮通常可以代替菜单,这样就不必通过菜单逐层翻找调出,从而提高了工作效率。但即使同一个应用程序,各种用户使用同一个命令的频率也是不一样的,因此工具按钮也可以由用户自定义。

Windows 7和Microsoft Office 2007及以后版本的一些程序(如画图程序)中,使用了一种以皮肤及标签页为架构的功能区(Ribbon)用户界面,以替代传统的菜单栏、工具栏和下拉菜单。该界面将相关的选项组织在一组,将最常用的命令放到窗口的最突出位置,用户可以更轻松地找到并使用这些功能,并减少鼠标的单击次数,总体来说比之前的下拉菜单效率要高很多。例如,文件管理器“主页”主功能区中提供了核心的文件管理功能,包括复制、粘贴、删除、恢复、剪切、属性等(见图1.17)。这些功能占用户日常操作的大部分。

图1.17 Windows 8的资源管理器的功能区

5. 图标

图标是在GUI操作系统桌面或程序窗口中显示的代表应用程序或程序所管理的数据的图形符号(见图1.18),一般是一个指向相应程序或文件的链接。

文件夹(也称为目录)中的用户数据和程序管理的特定数据通过图标显示出来。通常情况下显示的是数据内容缩略图,或与数据相关联的应用程序的代表图案。单击数据的图标,可以完成启动相关应用程序及显示数据本身两步工作。

图1.18 程序中代表数据的图标

应用程序的图标只能用于启动应用程序。

6. 对话框

对话框是GUI中的一种特殊窗口(见图1.15),用于向用户显示信息,或在需要的时候获取用户的响应,或者两者皆有。程序使用对话框与用户交互的方式就是计算机和用户之间进行“对话”。

非模态对话框:用于向用户请求非必需信息,可以不理会这种对话框或不向其提供任何信息而继续进行当前工作。对话框所属程序窗口与该对话框窗口均可处于打开且活动状态。

模态对话框:这种对话框强制要求用户响应,在用户与该对话框完成交互之前不能再继续进行其他操作。模态对话框用在需要一些必需的信息然后才可以继续进行其他操作,或确认用户想要进行一项具有潜在危险性操作的情况下。模态对话框一般分为系统级和应用程序级。系统级对话框出现时,用户在完成与这个对话框交互之前不能在该计算机系统中进行其他操作,例如关闭对话框。应用程序级的模态对话框则只对它所属的程序有所限制。

1.3.2 Java GUI程序的构成

使用Java语言开发的桌面GUI程序运行时一般都会打开一个窗口,用户对程序的使用和操作都在窗口中进行。Java GUI程序首先要生成和管理一个窗口。窗口是一个Java GUI程序的界面容器,其中包含图标、按钮、菜单等组件。

为了对相关组件进行分类组织和统一管理,可以把这些组件一起放到一个容器中。容器是一种能够容纳其他组件或容器的特殊组件。Java GUI程序对程序窗口及其他容器中组件排放次序和位置的控制和管理称为布局。最简单的布局方法是指定各个组件左上角在窗口中的位置及其宽度和高度。当各个组件的位置指定之后,也就确定了它们的排放次序。这种绝对定位方式可以精确控制每一个组件在窗口中的排布,但当窗口大小改变之后,一些组件可能出现在窗口边框之外而不可见,一些组件可能离窗口边框太远,一些边框周围组件太拥挤,一些边框周围太空旷,这就破坏了原本设计得很美观协调的界面。而且每种类型操作系统对屏幕的定义不一样,界面在一种视窗系统中很美观,但到了另一种系统中就未必。为了解决对组件绝对定位存在的问题,Java GUI程序可以采用托管定位的方式进行自动布局管理,具体工作由一种叫作布局管理器的对象完成。给容器指定了布局管理器并设置了布局信息后,显示时将会自动对其中的子组件进行布局、定位和计算大小的操作,从而使组件以更好的方式显示在容器中。

当GUI程序运行时,用户单击鼠标、输入字符或者改变窗口等操作发生时,操作系统都会生成应用程序GUI事件,例如,鼠标单击事件、按键事件或者窗口绘制事件,确定哪个窗口和应用程序应当接收事件,并把事件添加到应用程序的事件队列中。操作系统和应用程序通过事件循环处理用户的操作,从事件队列中读取GUI事件,并根据具体的事件类型和有关信息执行程序的相关功能,从而对用户的操作做出相应的反应。

总之,程序的GUI是以图像的方式在计算机显示屏上显示的,显示时需要确定图像各像素的坐标和颜色等信息。一个Java GUI程序首先需要创建窗口,至少有一个容器容纳了其他界面组件。程序一般通过设置布局管理器对窗口中各个组件的显示位置和大小进行管理。用户在界面组件上的操作产生事件,通过事件循环执行程序的有关功能对事件进行响应。