第11章简单GUI编程
内容提示:程序设计开发中一个重要的工作就是做好程序与用户之间的交互,而图形用户界面就是用图形的方式实现人与计算机的交互,它为用户提供了一个直观、方便、快捷的输入输出界面。Java提供了强大的图形用户包,开发人员可以方便地建立用户图形窗口界面,响应并处理交互事件。
11.1 Java的GUI
图形用户界面(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类库设计和实现图形用户界面的工作主要有两个:一是应用的外观设计,即创建组成图形界面的各部件,指定其位置和属性关系,根据需要进行排列,从而构成完整的图形用户界面的物理外观;二是与用户的交互处理,包括定义图形用户界面的事件以及各部件对不同时间的响应处理。
11.2AWT抽象窗口工具集
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-2CheckBox的常用方法
方法
功能描述
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. JPaneB. JFrameC. JComponentD. JWindows
11.8下面哪个事件监听器可以处理在文本框中输入回车键的事件______。
A. ItemListenerB. ActionListener
C. KeyListenerD. 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实现窗口登陆对话框,要求输入用户名和密码,如果输入正确,弹出对话框提示正确,否则提示错误。