第七章 Java图形用户界面练习
更新时间:2023-10-16 11:13:01 阅读量: 综合文库 文档下载
- 第七章大风起兮怎么通关过推荐度:
- 相关推荐
第七章 图形用户界面 57
第七章 图形用户界面
在应用程序开发中,友好的用户界面是一个最基本的要求,本章将使用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布局 */
57
第七章 图形用户界面
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); //设置组件是可见的 } }
58
⑶ 编译EmployeeMess.java程序,生成EmployeeMess.class类文件,以供其他应用程序所用。
⑷ 程序及分析
程序中使用了AWT组件来构建用户界面,在Frame容器上摆放Label、TextField和Button组件,由于采用了FlowLayout布局, 所以布局在容器上组件的大小不会随容器大图7-1 示例7.1.1用户界面 小的改变而改变,而组件所在的行会改变。
⑸ 测试EmployeeMess类的功能。编写一个简单的应用程序,创建EmployeeMess对象,验证EmployeeMess的功能。参考代码如下:
public class TestEmployeeMess {
public static void main( String[] args ) {
new EmployeeMess(); } 58
第七章 图形用户界面
}
59
编译并运行测试程序,用户界面经鼠标拖动改变大小后,如图7-1所示。 注意:该程序不能正常退出,只能强行退出。
自由练习7.1 仿照实验示例7.1.1,设计一个录入或显示学生信息的程序界面。学生信息量包括ID(身份证)、name(姓名)、sex(性别)、birthday(生日)、home(籍贯)、number(学号)和result(入学成绩),以FlowSaylout布局安排组件。 实验示例7.1.2 编程实现一个如图7-2的小学生习题训练用户界面。
实现该示例的步骤如下: ⑴ 简要分析
为了使该界面应用于其他程序,可以使用
JPanel组件构建界面。根据要求该界面有3行组图7-2 示例7.1.2程序界面 成:第一行由一个标签(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(\显示第1个运算数 JLabel num2=new JLabel(\显示第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行的组件)摆放在界面上
59
第七章 图形用户界面
add(next); ////将next按钮(第3行的组件)摆放在界面上 } }
60
⑶ 编译StudentSreen.java程序,生成StudentSreen.class类文件,以供其他应用程序所用。
⑷ 程序及分析
本程序使用swing组件构建用户屏幕,采用JPanel容器嵌套JPanel容器的方式,目的是该界面可以添加到Frame或JFrame容器上,为其他程序所用。
⑸ 测试StudentSreen类的功能。编写一个简单的应用程序,将StudentSreen对象添加到JFrame窗口上,验证StudentSreen的功能。参考代码如下:
import javax.swing.*;
public class TestStudentScreen extends JFrame {
TestStudentScreen() {
add(new StudentScreen()); setVisible(true); pack();
setDefaultCloseOperation(3); }
public static void main(String [] args) {
new TestStudentScreen(); } }
编译并执行该程序,观看程序的界面效果。
实验示例7.1.3 在实验示例7.1.1中设计的用户界面,是用FlowSayout布局组件的,组件的大小不随容器的变化而变化,布局有些不太整齐,修改此用户界面,改用GridLayout布局,使界面整洁一些。
实现该示例的步骤如下: ⑴ 简要分析
为了界面的整洁性,可以使用Swing组件构建用户界面,为了使该界面能部署在JFrame窗体容器上,采用JPanel容器来构建用户界面屏幕,并在JPanel容器中嵌套两个JPanel容器,一个JPanel容器上布局用于显示标识的Label组件和输入或显示个人信息的TextField组件,以一行四列的形式摆放组件;另一个JPanel容器上布局Button组件,以一行两列的形式摆放。
⑵ 根据上述简要分析,给出如下参考程序代码(EmployeeMess2.java):
/*公司职员信息界面程序 EmployeeMess2.java *使用Swing组件构建,采用GridLayout布局 */
import java.awt.*;
import javax.swing.*;
public class EmployeeMess2 extends JPanel {
JTextField ID = new JTextField(18); JTextField name = new JTextField(10);
JTextField birthday = new JTextField(10); JTextField sex = new JTextField(2); 60
61 第七章 图形用户界面
JTextField home = new JTextField(18); JTextField address = new JTextField(18); JTextField number = new JTextField(5); JButton oprate = new JButton(\操作\ JButton exit = new JButton(\退出\ JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); public EmployeeMess2() {
this.setLayout(new GridLayout(2,1));//设置JPanel容器上组件布局为2行1列 jp1.setLayout(new GridLayout(0,4)); //设置jp1容器上组件的布局为n行4列 jp1.add(new JLabel(\身份证号码\把组件加入jp2容器中 jp1.add(ID); //.................. jp1.add(new JLabel(\姓名\ jp1.add(name); //.................. jp1.add(new JLabel(\性别\ jp1.add(sex); //.................. jp1.add(new JLabel(\出生日期\ jp1.add(birthday); //.................. jp1.add(new JLabel(\籍贯\ jp1.add(home); //.................. jp1.add(new JLabel(\居住地\ jp1.add(address); //.................. jp1.add(new JLabel(\职工号\ jp1.add(number); //..................
jp2.setLayout(new GridLayout(1,2)); //设置jp2容器上组件的布局为1行2列 jp2.add(oprate); //将按钮添加到jp2容器上 jp2.add(exit); //..................... this.add(jp1); //将jp1放入当前容器中
this.add(jp2); //............................ this.setSize(200,200); } }
⑶ 编译EmployeeMess2.java程序,生成EmployeeMess2.class类文件,以供其他应用程序所用。
⑷ 程序及分析
程序中使用了swing组件来构建用户界面,在JPanel容器上嵌套摆放了两个JPanel容器组件,在两个Jpanel容器上分别布局了表示职工信息的组件和操作按钮组件。
由于全部采用了GridLayout布局,所以嵌套在JPanel容器上的两个JPanel组件的大小是一样的,同样布局在第一个JPanel容器上的所有组件其大小是一样,而布局在第二个JPanel容器上的两个按钮其大小也是一样的。它们会随界面大小的改变而改变,而组件所在的行不会改变。
⑸ 测试EmployeeMess2类的功能。编写一个简单的应用程序,创建一个JFrame窗口对象,将EmployeeMess2对象添加到JFrame窗口上,验证EmployeeMess2的功能。参考代码如下:
import javax.swing.*;
public class TestEmployeeMess2 {
public static void main( String[] args ) {
图7-3 示例7.1.3 用户界面
61
第七章 图形用户界面
JFrame f1=new JFrame();
f1.add(new EmployeeMess2()); f1.setTitle(\公司职员信息\ f1.pack();
f1.setVisible(true);
f1.setDefaultCloseOperation(3); } }
62
编译并运行测试程序,用户界面经鼠标拖动改变大小后,如图7-3所示。
自由练习7.2 修改自由练习7.1,按GridLayout方式布局屏幕。运行并观看屏幕显示效果。
实验示例7.1.4 职工食堂为了方便职工就餐,进行了一次“我所喜爱的主食和副食”调查,调查表中列出了一些食堂经营的主食和副食类,经营者将调查表发给各位职工,让他们推荐自己喜欢的主食和副食。经营者将根据调查结果确定其经营方向。试创建一个调查表式的选项界面。
实现该示例的步骤如下: ⑴ 简要分析
可以把主食类和副食类分开,主食类包括米饭、馒头、卤面、涝面、包子、水饺等;副食类可分为菜类和汤类,菜类包括红烧肉、酱排骨、卤鸡、烧鸭、烧鱼、炒青菜、炒豆芽、烧茄尖等;汤类包括西红柿蛋汤、虾仁蛋汤、白木耳甜汤、玉米甜汤等。
可以设计这样一个界面,按照主食、菜类和汤类划分,可以分别将它们放入Checkbox选择框中布局在界面上供选择。
⑵ 根据上述简要分析,给出如下参考程序代码(EealMenu.java): //我所喜爱的主食和副食调查表程序MealMenu.java
import java.awt.*; import javax.swing.*;
public class MealMenu extends JFrame {
Checkbox [] sele1 = new Checkbox[6]; Checkbox [] sele2 = new Checkbox[8]; Checkbox [] sele3 = new Checkbox[4]; JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JPanel panel3 = new JPanel(); JPanel panel4 = new JPanel(); JButton ok = new JButton(\确定\ JButton exit = new JButton(\退出\
JLabel lab = new JLabel(\请选择你所喜欢的美食菜肴!!!\ MealMenu() {
super(\请选择你所喜欢的食品调查表\//调用父类构造器,设置标题栏 sele1[0]=new Checkbox(\米饭\加入主食选择菜单项 sele1[1]=new Checkbox(\馒头\ sele1[2]=new Checkbox(\卤面\ sele1[3]=new Checkbox(\涝面\ sele1[4]=new Checkbox(\包子\ sele1[5]=new Checkbox(\水饺\
sele2[0]=new Checkbox(\红烧肉\加入副食菜类选择菜单项 62
第七章 图形用户界面 63
sele2[1]=new Checkbox(\酱排骨\ sele2[2]=new Checkbox(\卤鸡\ sele2[3]=new Checkbox(\烧鸭\ sele2[4]=new Checkbox(\烧鱼\ sele2[5]=new Checkbox(\炒青菜\ sele2[6]=new Checkbox(\炒豆芽\ sele2[7]=new Checkbox(\烧茄尖\
sele3[0]=new Checkbox(\西红柿蛋汤\加入副食汤类选择菜单项 sele3[1]=new Checkbox(\虾仁蛋汤\ sele3[2]=new Checkbox(\白木耳甜汤\ sele3[3]=new Checkbox(\玉米甜汤\
panel1.setBackground(Color.white); //设置容器panel1背景
for(int i=0; i panel3.setBackground(Color.pink); //设置容器panel2背景 for(int i=0; i for(int i=0; i panel4.add(ok); //将按钮项加入到panel4容器中 panel4.add(exit); //......................... Container pane=this.getContentPane(); //获得界面容器 pane.setLayout(new GridLayout(5,1)); //界面容器布局5行1列 pane.add(lab); //将标签项放入界面容器 pane.add(panel1); //将panen1放入界面容器 pane.add(panel2); //将panen2放入界面容器 pane.add(panel3); //将panen3放入界面容器 pane.add(panel4); //将panen4放入界面容器 this.pack(); this.setVisible(true); //窗口上内容是可见的 this.setDefaultCloseOperation(EXIT_ON_CLOSE); } } ⑶ 编译EealMenu.java程序,生成EealMenu.class类文件,以供其他应用程序所用。 ⑷ 程序及分析 程序中使用了awt和swing组件来构建用户界面,使用了3个Checkbox组件数组存放各分类项,并分别将它们放入3个JPanel容器中(采用默认布局)。由于是一个选择信息用户界面,所以增设了两个按钮,也将它们放入一个JPanel容器中。最后按照GridLayout布局,在用户界面(JFrame容器)上以每行一列的方式摆放各JPanel容器组件。 ⑸ 测试EealMenu类的功能。编写一个简单的应用程序,创建EealMenu对象,验证EealMenu的功能。参考代码如下: public class TestMealMenu { public static void main( String[] args ) { new MealMenu(); } } 编译并运行测试程序,执行结果如图7-4所示。 图7-4 示例7.1.4 用户界面 63 第七章 图形用户界面 64 自由练习7.3 仿照上边程序,创建一个学生选择下学期课程的选课屏幕界面。 7.2 实验二:菜单 实验目的 (1). 了解菜单栏(JmenuBar)、菜单(Jmenu)和菜单项(JmenuItem)的功能和作用。 (2). 使用JmenuBar、Jmenu和JMenuItem 类创建菜单。 实验要求 使用java.AWT和javax.swing类包中提供JmenuBar、Jmenu、JmenuItem及相关的组件编写程序创建并实现简洁明了的菜单用户界面。 实验内容 实验示例7.2.1 创建一个公司员工基本信息管理的菜单用户界面。 实现该示例的步骤如下: ⑴ 简要分析 一般来说,员工的基本信息管理可以包括登记员工信息、修改员工信息、查看员工信息、在员工调离后删除其信息等,此外还需要打印员工信息表以备案,有时还需要打印某个或某些员工的信息。对有些项目的说明提供帮助功能。 使用javax.swing类包中提供的JMenuBar、JMenu、JMenuItem功能将其划分为3个菜单:员工信息处理(添加个人信息、修改个人信息、查看个人信息、删除个人信息)、打印处理(打印所有信息、打印指定信息、打印指定员工的信息)和帮助信息。 ⑵ 根据上述简要分析,给出如下参考程序代码(EmployeelMenu.java): /*这是一个公司职员信息管理的菜单界面 *程序的名字是EmployeeMenu.prg */ import javax.swing.*; public class EmployeeMenu extends JFrame { JMenuBar empBar=new JMenuBar(); //定义菜单栏对象 JMenu mess = new JMenu(\员工信息处理\定义员工信息处理菜单对象 JMenuItem addMess = new JMenuItem (\添加个人信息\定义菜单项对象 JMenuItem editMess = new JMenuItem (\修改个人信息\ JMenuItem checkMess = new JMenuItem (\查看个人信息\ JMenuItem delMess = new JMenuItem (\删除个人信息\ JMenu prtMess=new JMenu(\打印处理\定义打印处理菜单对象 JMenuItem prt_all=new JMenuItem(\打印所有信息\定义菜单项对象 64 第七章 图形用户界面 JMenuItem prt_part=new JMenuItem(\打印指定信息\ JMenuItem prt_one=new JMenuItem(\打印指定员工的信息\ JMenu help=new JMenu(\帮助\定义帮助菜单对象 JMenuItem info=new JMenuItem(\关于帮助\定义菜单项对象 JMenuItem subject=new JMenuItem(\帮助主题\ JMenu exit = new JMenu(\退出\定义结束菜单对象 public EmployeeMenu() //构造方法 { this.setTitle(\公司员工信息处理\设置框架窗体标题 /* 以下把文件菜单项加入到Mess菜单中*/ mess.add(addMess); mess.add(editMess); mess.addSeparator();//添加分割条 mess.add(checkMess); mess.add(delMess); /* 以下把编辑菜单项加入到prtMess菜单中*/ prtMess.add(prt_all); prtMess.addSeparator();//添加分割条 prtMess.add(prt_part); prtMess.addSeparator();//添加分割条 prtMess.add(prt_one); /*以下把帮助菜单项加入到Help菜单中*/ help.add(info); help.add(subject); /*以下把所有菜单加入到菜单栏中*/ empBar.add(mess); 图7-5 示例7.2.1 用户界面 empBar.add(prtMess); empBar.add(help); empBar.add(exit); this.setJMenuBar(empBar); //将菜单栏加入框架窗口 this.setSize(300,200); this.setVisible(true); this.setDefaultCloseOperation(3); } } 65 ⑶ 编译EmployeeMenu.java程序,生成EmployeelMenu.class类文件,以供其他应用程序所用。 ⑷ 程序及分析 程序中使用了swing中的JMenuBar、JMenu和JMenuItem组件构建用户菜单界面。应该注意的是,本章的所有的实验示例只是创建了用户界面,并没有实现实际的功能,将在后边的章节中逐步实现其功能。 ⑸ 测试EmployeelMenu类的功能。编写一个简单的应用程序,创建EmployeelMenu对象,验证EmployeeMenu的功能。参考代码如下: public class TestMenu { public static void main(String [] args) { new EmployeeMenu(); } } 自由练习7.4 仿造实验示例7.2.1程序,创建一个学生信息处理菜单界面。 65
正在阅读:
第七章 Java图形用户界面练习10-16
南充职业技术学院试卷( 卷).doc07-29
认和专升本计算机(公共课)考试要求09-05
北京市中伦律师事务所07-19
博时策略灵活配置混合型证券投资基金基金合同(草案)07-06
社区工作基础知识辅导资料06-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 第七章
- 用户界面
- 图形
- 练习
- Java
- 优秀团支部事迹材料 - 2
- 中国发展与东亚经济一体化(实录)
- 九华山志卷六
- 青少年要有公民意识 - 初中政治第四册教案
- 切比雪夫不等式证明
- 企业安全生产会议记录新2016
- 顶板现浇结构外观及尺寸偏差检验批质量验收记录表020105
- 建筑室内电气施工管理要点
- 3202工作面瓦斯爆炸演习总结修改 - 图文
- 光电子技术(安毓英)习题答案
- 欧洲自助游网SWOT分析
- 三道堰旅游调研报告
- 论网上支付风险与防范
- 新牛津英语8B Unit8错题
- 音韵学常识
- 二级Access操作题预测题
- 2010版中国药典三部(生物制品)凡例
- 广州医学院新造校区项目现状管线迁改工程(施工组织方案)(兴宁版)
- 五年级上册海西乐园教案(全册)
- 经济法论文(消费者权益篇)