图形用户界面程序设计

上传人:第*** 文档编号:34212896 上传时间:2018-02-22 格式:DOC 页数:12 大小:384KB
返回 下载 相关 举报
图形用户界面程序设计_第1页
第1页 / 共12页
图形用户界面程序设计_第2页
第2页 / 共12页
图形用户界面程序设计_第3页
第3页 / 共12页
图形用户界面程序设计_第4页
第4页 / 共12页
图形用户界面程序设计_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《图形用户界面程序设计》由会员分享,可在线阅读,更多相关《图形用户界面程序设计(12页珍藏版)》请在金锄头文库上搜索。

1、图形用户界面程序设计9.1 进入 Java GUI 编程世界为了使读者对 Java GUI 程序设计有一个比较全面的了解,本节先简要介绍一下 Java GUI 程序设计的发展历程及 Java GUI 程序设计中的几个基本概念。9.1.1 AWT 与 Swing 介绍1. AWT在 Java 语言出现以前,各种操作系统平台如 Windows、Linux 、Solaris 等有其专有的图形用户界面。Java 语言为了达到独立于平台的目的,最初设计了一种名叫 AWT 的 GUI程序开发类库,AWT (Abstract Window Toolkit) 是指抽象窗口工具包,在 AWT 中提供了建立 GU

2、I 程序的工具集,它主要包括基本的 GUI 程序组件,如按钮、标签、菜单、颜色、字体类、布局管理器等,另外还提供了事件处理机制及图像操作等功能。AWT 可用于 Java 的 Applet 程序和 Application 程序中。AWT 提供的组件都在位于java.awt 包中。AWT 只是一组通用的无关于特定平台类。在具体某一平台上使用 AWT 组件时(如Button,即按钮),由运行时系统调用本地代码 (native code)来实现该组件。例如,如果在Windows 平台中运行的一个 Java GUI 程序中使用了一个按钮组件,则运行时系统会调用Windows 中实现按钮的代码显示一个 W

3、indows 风格的按钮,而同样的代码在 Solaris 平台中运行时,系统会调用 Solaris 中实现按钮的代码显示一个 Motif(Solaris 中窗口风格的名称)风格的按钮。这就会出现在 Java 中相同名称的组件,由于不同平台上本地实现的不同,而产生不同的外观效果。因此,AWT 组件要在不同的平台上给用户提供一个一致的外观效果就遇到了困难。也正是因为 AWT 所提供的窗口组件,并非由 AWT 完全真实的实现了这些组件工具,因此才将 AWT 称为抽象的(abstract)窗口工具。AWT 的设计思想可以使 Java 语言系统的设计人员很快实现在不同平台下的 GUI 组件,但缺点随操作

4、系统平台的不同会显示出不同的样子。另外,AWT 中的组件比较呆板,如按钮 Button,只能是一个方框中显示按钮的名称这种样子,而无法改变。为此,在 Java 2 以后,SUN 公司开发出了一种功能更为强大的名叫 Swing 组件。2. SwingSwing 组件与 AWT 组件相比有如下特点: Swing 组件完全用 Java 语言编写。 Swing 组件的实现没有使用本地代码。 Swing 组件的外观灵活多样,如按钮可以显示图形,形状除了矩形外还可以是圆形或其他形状的按钮。 Swing 提供的组件比 AWT 更丰富,如 Swing 提供 AWT 中所没有导航、打印等功能。但是读者要注意,S

5、wing 并不是为了完全替代 AWT,而是对 AWT 的扩展,因为Swing 中的组件继承自 AWT,Swing 中的版面布局管理和事件处理使用的还是 AWT 中定义的内容。一般将 AWT 组件称为重量级组件,而将 Swing 中不依赖于本地 GUI 资源的组件称为轻量级组件。Swing 组件位于 javax.swing 包中,该包中定义 250 多个类,其中的组件类近 50 个(以 J 开头) 。javax 表示 java extension 是缩写,因此对 Java 的所有扩展功能都放在 javax中,Swing 就是其中之一。3. 组成 GUI 程序的组件简介在 Java GUI 程序设

6、计中,一个程序通常由以下 4 个基本部分组成:(1)基本组件基本组件是构成 GUI 程序的按钮(Button) 、标签(Label)、文本框(TextField)、选择框(Choice)等。基本组件都是抽象类 Component 的子类,而 Component 类又继承 Object 类,如图 9-1 所示。(2)容器类组件一个 GUI 程序中的基本组件,通常要放在一个容纳这些基本组件的容器中,所以把在AWT 中专门容纳其他组件的一些特定组件叫容器(Container),容器的基类是 Container 类,Container 类是 Component 的子类。如图 9-1 所示。(3)布局管

7、理类一个容器中的组件,按照什么样的方式排列(即容器中的组件如何摆放) ,由 AWT 中ObjectAppletLayoutManagerScrollpaneWindowPanelMenuBarFrameDialogFileDialogJComponentMenuItemCheckboxMenuItemMenuTextFieldTextAreaMenucomponentEventObjectFontFontMetricsColorGraphicsGraphics 2DComponentButtonTextComponentCanvasCheckBoxChoiceLabelListScrollba

8、rContainerLayoutManager2GridLayoutFlowLayoutCardLayoutBorderLayoutGridBaglayoutJAppletJWindowJFrameJDialog轻量级组件重量级组件AudioClipAppletStubAppletContextjava.applet包javax.swing包RootPaneContainer:表示类:表示抽象类:表示接口图 9-1 AWT 类层次结构图的布局管理类组件负责。布局管理类组件也叫布局管理器。布局管理器类在图 9-1 的左下方,布局管理器类实现了 LayoutManager 接口或 LayoutMa

9、nager2 接口。(4)事件处理类当用户按下 GUI 程序中的一个按钮时,程序中就要对该“事件”进行处理,如按下一个“保存”按钮时,要进行文件的存盘操作。AWT 中定义的事件类 AWTEvent 是EventObject 类的子类,而 EventObject 类继承了 Object 类。图 9-2 是 Swing 中主要类的层次结构图。由于 Swing 中的 JApplet、JWindow、JFrame和 JDialog 等类直接继承了 AWT 中的相关类,所以 Swing 中的这几个类在图 9-1 中。从图9-2 中可以看出 AWT 中的基本组件,在 Swing 中用相应的组件来代替,如

10、AWT 的 Button组件,在 Swing 中相应的组件为 JButton。Swing 组件类的名称前都加了“J”这个字母,以示与 AWT 组件的区别。在这里给出 AWT 和 Swing 组件层次结构图的主要目的是让读者对组件(components) 、容器(containers ) 、布局管理器( LayoutManager)之间的关系、以及 AWT 组件与 Swing组件之间的关系有一个初步了解,因为学习 GUI 程序设计理解类之间的继承关系非常重要。AWT 及 Swing 就好像一大片树林,其中有各种资源,而其间又有许多是互动的关系。我们需要了解这片树林到底有哪些可用资源,这些资源放在

11、哪里,它们之间的关系是怎么样的,这样才不会见树不见林,得心应手的设计 Java GUI 程序。下面介绍一个简单 Java GUI 程序,通过该程序使读者先对 Swing 程序有一个直观的印象。9.1.2 【案例 9-1】文本转换器程序1. 案例描述AbstractButonjav.swing.text.JTextComponetJMenultemJButonJTogleButonJComponet JCheckBoxMenultemJMenuJRadioButonMenultemJCheckBoxJRadioButonJEditorpaneJTextFieldJTextAreaJScrolBa

12、r JOptionPaneJPaswordFieldJPopumenu.SepratorJProgresBarJComboBx JTableJTabedPaneJLayerdPaneJSplitPaneJSliderJSepartorJRotPaneJTreJPanel JColrChoserJScrolPaneJFileChoserRotPaneContainer JTolTipJTextPaneJPopuMenu JTolBarJMenuBarJInternalFrameJLabelJViewPortJDeskTopPaneJList图 9-2 Swing 类层次结构图设计一个 GUI 程

13、序,在一个文本框中输入一行英文,单击转换按钮后可以将文本框中输入的内容转换为大写字母后显示出来。2. 案例效果图 9-3(a)所示的窗口是案例程序在执行后的效果,图 9-3(b)所示的窗口是输入文本内容后转换的结果。3. 技术分析该 GUI 程序也由前面介绍有 4 个部分组成: 基本组件:组成该 GUI 程序的基本组件有:一个按钮(JButton)、两个标签(JLabel)和一个文本框(JTextField)。一个标签用于显示提示信息,另一个标签用于显示转换后的结果,文本框用于输入要转换的文本内容,按钮用于发出转换命令。 容器:上述基本组件可以放在一个名叫 JFrame 的容器中,该窗口一般作

14、为应用程序的框架窗口。 布局管理:放置基本组件的容器可以使用一个名叫 GridLayout 布局管理类管理。 事件处理:该程序中要完成将输入的文本内容轮换为大写后显示的功能,因此事件处理程序中首先要取得在文本框中输入的内容,这可以使用文本框(JTextField)定义的 getText 方法。对取得的字符串可以使用 String 类定义的 toUpperCase 方法转换为大写,然后使用标签类(JLabel)定义的 setText 方法,将转换后的内容设置为标签要显示的内容。4. 程序解析下面是该案例的程序代码:图 9-3 案例 9-1 的显示效果(a) (b)01 /*02 /案例:9.1

15、03 /程序名:toUpperCase.java04 /功能:转换器程序,将句子中小写字母转换为大写字母 05 /*06 07 import java.awt.*;08 import javax.swing.*;09 import java.awt.event.*;10 11 public class toUpperCase 12 public static void main(String args) 13 /创建一个框架作为顶层容器14 JFrame frm = new JFrame(文本转换器程序);15 /取得 frm 中放置内容的面板16 Container contentPane

16、= frm.getContentPane();17 /设置 frm 的布局管理18 contentPane.setLayout(new GridLayout(4,1);19 20 /创建基本组件21 final JLabel label1 = new JLabel( 请在下面的文本框中输入要转换的内容: );22 final JLabel label2 = new JLabel();23 JButton button = new JButton(显示转换后的文本内容);24 final JTextField textField = new JTextField(40);25 26 /将基本组件添加到内容面板27 contentPane.add(label1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号