第四章 Java图形界面设计
Java语言为设计出友好的人机交互界面,而提供了编制
操作简便、画面美观生动的图形界面的能力。通过本章
的学习您将达到如下的目标,
– 掌握 Java语言中组件容器的基本概念
– 掌握 swing包中常用 GUI组件的使用方法
– 了解 Java中的菜单技术
– 了解 Java中的各种对话框的使用方法
– 掌握 Java中布局管理器的基本概念
– 了解常用的布局管理器的使用方法
– 掌握 Java中的事件处理原理
– 了解常用事件的处理技术
项目引入
HNS软件学院开发部应学院财务处的要求为其
开发一套计算器软件,要求实现一些财务方面
的计算功能。在前面对 Java语言的基础知识学
习的前提下,使我们具备了编制该计算器软件
的基本能力。但是,不能提供一个操作简便、
直观的图形化交互界面。因此,为了改进计算
器的交互界面,需要使用 Java中 GUI功能来加以
改进交互界面。现指派您使用本章将要学习的
有关 Java的 GUI技术实现计算器软件交互界面的
改进。
§ 4.1 图形用户界面和 Swing常用组件
内容提要,
图形用户界面 (Graphics User Interface,简称 GUI)画面生动、操作简单,
省去了字符界面用户必须记忆各种命令的麻烦,所以深受广大用户喜爱
和欢迎。在 Java中,可以使用 AWT技术与 Swing技术进行图形用户界面
开发。本小节的主要内容包括,
1.AWT与 Swing介绍
2.容器的基本概念
3.Swing常用组件介绍,JFrame,JLabel,JButton,JCheckBox、
JRadioButton,JComboBox,JScrollPane,JTextField,JTextArea和
JPasswordField。
4.1.1 AWT与 Swing
图形用户界面 (Graphics user interface),简称 GUI,它以图形
的方式,借助菜单、按钮等标准图形界面元素和鼠标操作,
帮助用户向计算机系统发出命令,并以图形的方式将命令
执行结果反馈给用户 。
设计和实现用户图形界面主要有两方面的工作,
① 创建组成界面的各部分和元素, 指定它们的属性和位置关
系, 根据具体需要排列它们, 从而构成完整的图形用户界
面的物理外观 。
②定义图形用户界面的事件和各界面元素对不同事件的响
应,从而实现图形用户界面与用户的交互功能。(关于事
件的概念,请参看本章第四节的相关内容。)
4.1.1 AWT与 Swing
AWT(Abstract Window Toolkit)的全称是抽象窗
口工具集。 AWT的层次关系如下图,
Panel
J av a, aw t, Com po ne nt
C he c kB oxC a nv a s
W i nd ow
Fr am e
B ut to n
C on ta in e r
App l et Di al og
C ho ic e La be l Lis t Te xt C om po ne nt Sc roll ba r
4.1.1 AWT与 Swing
使用 AWT设计的界面在不同的平台上有可能有不同的显
示效果 。 为了解决这个问题, 在 Java2中发布了 Swing组
件 。 使用 Swing组件的程序运行在不同的平台上时, 都
会有相同的显示外观 。 Swing组件允许程序员为所有的
平台指定统一的外观和感觉, 或者为每个平台提供定
制的外观和感觉 。 另外, 和 AWT相比, Swing提供了许
多新的图形界面组件, 不但有各式各样先进的组件,
而且更为美观易用 。 虽然 Swing似乎看起来比 AWT有更
大的优势, 但程序员究竟是选择 AWT组件还是 Swing组
件, 可能需要根据实际的软件开发而定 。
4.1.1 AWT与 Swing
Swing是架构在 AWT之上的,没有 AWT就没有 Swing。
Swing是 AWT的扩展,Swing组件都是 AWT的 Container
类的直接子类和间接子类。下图描述了 Swing的层次结
构,
Ja va, l ang, Obj ec t
Ja va, awt, Di al og
Ja va, awt, Com pone nt
Ja va, awt, Cont ai ner
Ja va, awt, PanelJCo m pone nt
处理类组件 Ja va, awt, Fr am e JW i ndow
JF ra m e
Cel l Rend er er Pa ne Ja va, awt, Wi ndow
JDi al og
容器类组件 Ja va, app l et, Appl et
JApp l et
4.1.1 AWT与 Swing
下图对 JComponent分支做了细化,描述了 JComponent层
次下的用户界面处理组件和用户界面容器组件。
Com po ne nt
JT ex t Fi el d
Con t ai ne r J Com po ne nt
JT ex t Com po ne nt
JL ab el
Abs t r ac t But t on
JBu t t on
JM en uI t em
JT og gl eBu t t on
JCh ec kBo x
JRa di oBu t t on
JCo m bo Box
JT ex t Ar ea
JM en u
JP op up M en u
JPanel
JL i st
4.1.2 容器
Container类是所有容器最终的父类 。 容器中可以添加多个组
件 。 当每个组件被添加到容器中时, 它们按照从前到后的
顺序存储在容器的内部数据结构中 。 下面列出了一些
Container类的常用方法,
add(Component c)
add(Component c,int index)
remove(Component c)
remove(int index)
setLayout(LayoutManger m)
4.1.3 Swing常用组件
1,JFrame
JFrame是一个顶层容器,它的外观就像我们平常在 Windows操作系统下
见到的窗口,有标题、边框、菜单、大小等等。 JFrame 窗口由三部分
组成,Frame(框架 ),Menu Bar(菜单栏 )和 Content Pane(内容面板 )。在
菜单栏中可以添加各种菜单及子菜单,在内容面板可以添加各种常见
Swing组件。
4.1.3 Swing常用组件
2,JLabel
标签可以用来显示文本信息和图标 。 在 Swing中, 标签由 JLabel来定义 。
Javax.swing.JLabel类的常用方法有,
JLabel(String text)
JLabel(Icon image)
Jlabel(String text,Icon icon,int horizontalAlignment)
void setText(String text)
void setIcon(Icon icon)
void setToolTipText(String toolTipText)
setHorizontalTextPosition(int textPosition)
setVerticalTextPosition(int textPosition)
4.1.3 Swing常用组件
3,JButton
JButton类用于创建普通按钮 。 按钮表面所显示的文本称为按钮标签 。 在一
个图形界面中可以有多个按钮, 但应该确保为每个按钮提供唯一的按钮
标签, 否则会使用户感到迷惑 。 另外, 按钮也支持显示图标 。
Javax.swing,JButton类的常用方法有,
JButton(String text)
JButton(Icon icon)
void setLabel(String text)
void setRolloverIcon(Icon rolloverIcon)
4.1.3 Swing常用组件
4,JCheckBox
复选框可以让用户做出多项选择 。 Javax.swing,
JCheckBox类的常用方法有,
JCheckBox (String text)
void setLabel(String text)
void setSelected(boolean b)
4.1.3 Swing常用组件
5,JRadioButton
单选按钮 (JRadioButton)与复选框的相同之处在于它们也有两种状态:选
中和未选中 。 然而, 单选按钮通常是成组出现, 一次只能选中该组中的
一个单选按钮, 也就是说, 选择一个单选按钮将迫使该组的所有其它按
钮都处于未选中状态 。 Javax.swing.ButtonGroup类负责组织一组按钮 (包
括 JRadioButton,JCheckBox,JButton等 ),并维护这些按钮间的逻辑关
系 。 需要注意的是, 必须用 ButtonGroup类将一组相关的单选按钮组织
起来, 否则这组单选按钮就不是, 单选, 的了, 而是象复选框一样可以
同时选择多个 。
Javax.swing,JRadioButton类的常用方法有,
JRadioButton (String text)
void setLabel(String text)
void setSelected(boolean b)
4.1.3 Swing常用组件
6,JComboBox
组合框提供一列选项, 用户可以在这些选项中进行单项
选择 。 在 Swing中, 组合框由 JComboBox类实现 。
Javax.swing,JComboBox类的常用方法有,
JComboBox(Object[] items)
void addItem(Object object)
void setSelectedIndex(int index)
void setMaximumRowCount (int count)
4.1.3 Swing常用组件
7,JScrollPane
滚动条 (Scroll Bar)是一种直观而简单的控制组件, 可以
用它来实现窗口的滚动 。 在 Swing中, JScrollPane类用
来实现滚动条 。 默认情况下, JScrollPane只在需要滚动
条的时候才显示它们 。
Javax.swing,JScrollPane类的常用方法有,
JScrollPane(Component view)
void setHorizontalScrollBarPolicy(int policy)
void setVerticalScrollBarPolicy (int policy)
4.1.3 Swing常用组件
8,JTextField,JTextArea和 JPasswordField
JTextField和 JPasswordField提供一个处理单行文
本的区域,用户可以通过键盘在该区域中输入
文本,或者程序将运行结果显示在该区域中。
JPasswordField是 JTextField的子类,主要用于用
户密码的输入,因此它会隐藏用户实际输入的
字符。与 JTextField(包括 JPasswordField)只能处
理单行文本不同,JTextArea可以处理多行文本。
4.1.3 Swing常用组件
(1) Javax.swing,JTextField类的常用方法有,
JTextField(String text)
JTextField(String text,int columns)
String getText()
void setText(String text)
(2) Javax.swing,JPasswordField类的常用方法有,
JPasswordField (String text)
JPasswordField (String text,int columns)
void setEchoChar(char c)
(3) Javax.swing,JTextArea类的常用方法有,
JTextArea(String text)
JTextArea(String text,int rows,int columns)
void setLineWrap(boolean wrap)
小结
1,图形用户界面 (Graphics user interface)
图形用户界面简称 GUI,它以图形的方式, 借助菜单, 按钮等标准图形界面元素和
鼠标操作, 帮助用户向计算机系统发出命令, 并以图形的方式将命令执行结果
反馈给用户 。
2,AWT和 Swing
AWT(Abstract Window Toolkit)的全称是抽象窗口工具集 。 和 AWT相比, Swing组
件不需要使用当前平台所使用的复杂 GUI功能, 没有本地代码, 不依赖于本地
平台 。 另外, Swing提供了许多新的图形界面组件, 不但有各式各样先进的组
件, 而且更为美观易用 。
3,容器
容器是放置组件的地方, 容器中还可以放置容器, 也就是说容器是可以嵌套的 。
Swing的顶层容器只有三种,JApplet,JDialog和 JFrame。
4,Swing中的常用组件
包括 JFrame,JLabel,JButton,JCheckBox,JRadioButton,JComboBox、
JScrollPane,JTextField,JTextArea和 JPasswordField等 。