第七章 Java图形用户界面练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章图形用户界面

在应用程序开发中,友好的用户界面是一个最基本的要求,本章将使用Java中提供的java.AWT和javax.Swing类包中有关组件设计用户界面。

7.1 实验一:一般用户界面的实现

实验目的

(1). 了解AWT和Swing常用容器组件和基本组件的作用和功能。

(2). 了解各类布局管理器的作用和功能。

(3). 使用各类布局管理器和组件创建程序的图形用户界面。

实验要求

使用java.AWT和javax.Swing类包中提供了设计用户界面的各种组件,诸如Frame、JFrame、Panel、JPanel等容器组件、TextField、JTextField、Label、JLabel、Button、JButton 等基本组件等,编写程序创建并实现简洁明了的用户界面。

实验内容

使用AWT和Swing组件创建一般的应用程序用户界面。

实验示例7.1.1在前边定义了公司的职员信息类,成员变量包括ID(身份证)、name(姓名)、sex(性别)、birthday(生日)、home(籍贯)、address(居住地)和number(职员号),设计一个录入或显示职工信息的程序界面(以FlowSaylout布局安排组件)。

实现该示例的步骤如下:

⑴简要分析

可以采用Frame容器组件构建用户界面,使用Label组件显示标识,使用TextField组件输入或显示个人信息,使用Button组件确定诸如输入、显示或退出操作。

可以建立一个Frame类的派生类EmployeeMess来完成用户界面的构建。

⑵根据上述简要分析,给出如下参考程序代码(EmployeeMess.java):

/*公司职员信息界面程序 EmployeeMess.java

*使用AWT组件构建,采用FlowLayout布局

*/

图7-1 示例7.1.1用户界面

import java.awt.*;

public class EmployeeMess extends Frame

{

TextField ID = new TextField(18);

TextField name = new TextField(10);

TextField birthday = new TextField(10);

TextField sex = new TextField(2);

TextField home = new TextField(18);

TextField address = new TextField(18);

TextField brithday = new TextField(10);

TextField number = new TextField(5);

Button oprate = new Button("操作");

Button exit = new Button("退出");

public EmployeeMess()

{

super("公司职员信息");

this.setLayout(new FlowLayout());

this.add(new Label("身份证号码")); //把组件加入到框架窗口中

this.add(ID);

this.add(new Label("姓名"));

this.add(name);

this.add(new Label("性别"));

this.add(sex);

this.add(new Label("出生日期"));

this.add(birthday);

this.add(new Label("籍贯"));

this.add(home);

this.add(new Label("居住地"));

this.add(address);

this.add(new Label("职工号"));

this.add(number);

this.add(oprate);

this.add(exit);

this.pack();//按合适大小显示对象

this.setVisible(true); //设置组件是可见的

}

} ⑶ 编译EmployeeMess.java 程序,生成EmployeeMess.class 类文件,以供其他应用程序所用。

⑷ 程序及分析

程序中使用了AWT 组件来构建用户界

面,在Frame 容器上摆放Label 、TextField 和

Button 组件,由于采用了FlowLayout 布局,所以布局在容器上组件的大小不会随容器大小的改变而改变,而组件所在的行会改变。

⑸ 测试EmployeeMess 类的功能。编写一个简单的应用程序,创建EmployeeMess 对象,验证EmployeeMess 的功能。参考代码如下:

public class TestEmployeeMess

{

public static void main( String[] args )

{

new EmployeeMess();

}

图7-2 示例7.1.2程序界面

} 编译并运行测试程序,用户界面经鼠标拖动改变大小后,如图7-1所示。

注意:该程序不能正常退出,只能强行退出。

自由练习7.1 仿照实验示例7.1.1,设计一个录入或显示学生信息的程序界面。学生信息量包括ID(身份证)、name(姓名)、sex(性别)、birthday(生日)、home(籍贯)、number(学号)和result (入学成绩),以FlowSaylout 布局安排组件。

实验示例7.1.2 编程实现一个如图7-2的小

学生习题训练用户界面。

实现该示例的步骤如下:

⑴ 简要分析

为了使该界面应用于其他程序,可以使用JPanel 组件构建界面。根据要求该界面有3行组成:第一行由一个标签(JLabel )和一个按钮

(JButton )组件构成;第二行可以由4个标签(分别表示两个运算数、运算符号和等号)和一个文本框(JTextField )组件构成;第3行由一个按钮构成。

由上所述,由于第1行和第2行含有多个组件,可以将它们分别以FlowLayout 流布局放在JPanel 容器中。这样就可以GridLayout 布局按3行的形式将所有组件摆放到界面上。

⑵ 根据上述简要分析,可以给出如下参考程序代码(StudentSreen.java):

/* 小学生训练题界面

* StudentScreen.java

*/

import java.awt.*;

import javax.swing.*;

public class StudentScreen extends JPanel

{

JLabel num1=new JLabel("0 "); //显示第1个运算数

JLabel num2=new JLabel("0 "); //显示第2个运算数

JLabel op=new JLabel("+"); //显示运算符号

JLabel info=new JLabel("测试时间10分钟,按'开始'键开始!");

JTextField answer=new JTextField(10); //输入运算结果

JButton next = new JButton("下一题"); //操作按钮

JButton start = new JButton("开始"); //操作按钮

JPanel pan1=new JPanel();

JPanel pan2=new JPanel();

JPanel pan3=new JPanel();

public StudentScreen()

{

setLayout(new GridLayout(3,1));

pan1.add(info); //将第1行的组件放在pan1容器中

pan1.add(start);//……………………

pan2.add(num1); //将第2行的组件放在pan2容器中

pan2.add(op); //……………………

pan2.add(num2); //……………………

pan2.add(new JLabel("="));//……………………

pan2.add(answer); //……………………

add(pan1); //将pan1(第1行的组件)摆放在界面上

add(pan2); //将pan2(第2行的组件)摆放在界面上

相关文档
最新文档