内容提示:程序设计开发中一个重要的工作就是做好程序与用户之间的交互,而图形用户界面就是用图形的方式实现人与计算机的交互,它为用户提供了一个直观、方便、快捷的输入输出界面。Java提供了强大的图形用户包,开发人员可以方便地建立用户图形窗口界面,响应并处理交互事件。
图形用户界面(Graphics user interface, GUI)是指用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令、启动操作,并将系统运行的结果以图形方式显示给用户的技术。由于用户界面设计质量的好坏直接影响软件的使用,Java语言对此也十分重视,几乎在JDK每个新的版本中,都增加了一定的GUI程序设计新技术或功能,Java语言的GUI发展始终保持着较好的连贯性和兼容性。
目前Java主要提供了两个处理图形用户界面的类库:java.awt和javax.swing。
AWT:抽象窗口工具集(Abstract Windows Toolkit),由于Java代码可以在不同的系统平台运行,而不同平台的图形界面外观设计各有差异,所以Java程序的图形用户界面在不同的平台上可能出现不同的运行效果,其外观取决于具体的平台,所以称AWT是一个抽象的工具集。
Swing:Swing是在AWT的基础上构建的,提供了比标准AWT组件更强大和灵活的功能。与AWT组件不同的是,Swing组件不是由特定的平台代码实现,而是纯粹的Java代码,因此能够实现与平台的无关(此类组件一般被称为轻量级组件)。
利用GUI类库设计和实现图形用户界面的工作主要有两个:一是应用的外观设计,即创建组成图形界面的各部件,指定其位置和属性关系,根据需要进行排列,从而构成完整的图形用户界面的物理外观;二是与用户的交互处理,包括定义图形用户界面的事件以及各部件对不同时间的响应处理。
AWT类包含在java.awt包中,主要包括用户界面组件、事件处理模型、图形和图像工具、布局管理器等。Java.awt包中的主要类及组件类的继承关系如图11-1所示。
图11-1 java.awt包的主要类及组件类的继承关系
|
构造方法 |
功能描述 |
|
Checkbox() |
创建不含标签的复选框 |
|
Checkbox(String label) |
创建含有标签的复选框 |
|
Checkbox(String label, boolean on) |
创建含有标签的复选框,并可指定选取状态 |
|
Checkbox(String label, CheckboxGroup g, Boolean on) |
创建含有标签并可指定选取状态和复选框群组的复选框 |
表11-2列出了CheckBox类的常用方法
表11-2 CheckBox的常用方法
|
方法 |
功能描述 |
|
String getLabel() |
获得此复选框的标签 |
|
boolean getState() |
获得此复选框的选取状态 |
|
void setState(boolean state) |
设置此复选框的选取状态 |
|
Object[] getSelectedObjects() |
获得被选取的复选框 |
|
CheckboxGroup getCheckboxGroup() |
返回复选框输入哪个组 |
|
void setSelected Checkbox(Checkbox) |
设置群组中指定的复选框为被选取的状态 |
【例11-9】流式布局管理器FlowLayout类的应用。
//********** ep11_9.java **********
import java.awt.*;
class ep11_9 extends Frame{
static Frame frm=new Frame("流式布局管理器应用");
public static void main(String args[]){
FlowLayout flow=new FlowLayout(FlowLayout.CENTER,5,10);
Button but=new Button("按钮");
Label lab=new Label("标签");
frm.setLayout(flow); //设置布局为流式布局
frm.setSize(200,150);
frm.setBackground(Color.RED);
frm.add(but);
frm.add(lab);
frm.add(new TextField("流式布局",18));
frm.setVisible(true);
}
}
运行结果如图11-10所示:
图11-10 左图为程序执行窗口右图为拉大后控件自动重新排列
11.1 什么是GUI?功能是什么?
11.2 Java中GUI工具包有______和______。
11.3 通过调用方法______可以改变当前容器的布局方式。
11.4 通过______方法向容器中添加组件。
11.5 AWT布局管理器有______、______、______、______和______。
11.6 Java GUI编程中常用的JButton是______。
A. 对象 B. 组件 C. 变量 D. 接口
11.7 ______可作为所有窗体和对话框的顶层窗体使用。
A. JPane B. JFrame C. JComponent D. JWindows
11.8 下面哪个事件监听器可以处理在文本框中输入回车键的事件______。
A. ItemListener B. ActionListener
C. KeyListener D. MouseListener
10.9 下列说法中错误的是______。
A. 与Swing相比,AWT更依赖于底层平台
B. Swing可以完全取代AWT
C. Component类是所有AWT组件的根
D. 容器用布局管理器来控制其中组件的摆放
11.10 利用AWT控件编写一个求解一元二次方程根的程序,要求:
(1)具有一元二次方程三个系数a、b、c的输入界面。
(2)显示b*b-4*a*c的值。
(3)显示求出的根。
11.11 编写一个应用程序,窗口标题为“移动按钮”,窗口布局为null,在窗口中有两个按钮,单击其中一个按钮能够让另一个按钮移动。
11.12 实现窗口登陆对话框,要求输入用户名和密码,如果输入正确,弹出对话框提示正确,否则提示错误。