




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
66第七章 图形用户界面第七章 图形用户界面在应用程序开发中,友好的用户界面是一个最基本的要求,本章将使用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布局 */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类文件,以供其他应用程序所用。图7-1 示例7.1.1用户界面 程序及分析程序中使用了AWT组件来构建用户界面,在Frame容器上摆放Label、TextField和Button组件,由于采用了FlowLayout布局,所以布局在容器上组件的大小不会随容器大小的改变而改变,而组件所在的行会改变。 测试EmployeeMess类的功能。编写一个简单的应用程序,创建EmployeeMess对象,验证EmployeeMess的功能。参考代码如下:public class TestEmployeeMess public static void main( String args ) new EmployeeMess(); 编译并运行测试程序,用户界面经鼠标拖动改变大小后,如图7-1所示。注意:该程序不能正常退出,只能强行退出。自由练习7.1 仿照实验示例7.1.1,设计一个录入或显示学生信息的程序界面。学生信息量包括ID(身份证)、name(姓名)、sex(性别)、birthday(生日)、home(籍贯)、number(学号)和result(入学成绩),以FlowSaylout布局安排组件。图7-2 示例7.1.2程序界面实验示例7.1.2 编程实现一个如图7-2的小学生习题训练用户界面。实现该示例的步骤如下: 简要分析为了使该界面应用于其他程序,可以使用JPanel组件构建界面。根据要求该界面有3行组成:第一行由一个标签(JLabel)和一个按钮(JButton)组件构成;第二行可以由4个标签(分别表示两个运算数、运算符号和等号)和一个文本框(JTextField)组件构成;第3行由一个按钮构成。摆放到界面上。行的形式将所有组件3布局按GridLayout就可以这样。容器中JPanel放在流布局LayoutFlow以可以将它们分别,多个组件行含有2行和第1第由于所述,由上 根据上述简要分析,可以给出如下参考程序代码(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行的组件)摆放在界面上add(next); /将next按钮(第3行的组件)摆放在界面上 .class类文件,以供其他应用程序所用。StudentSreen.java程序,生成StudentSreen 编译 程序及分析参考代码如下:。的功能StudentSreen验证,添加到JFrame窗口上对象StudentSreen将类的功能。编写一个简单的应用程序,StudentSreen 测试本程序使用swing组件构建用户屏幕,采用JPanel容器嵌套JPanel容器的方式,目的是该界面可以添加到Frame或JFrame容器上,为其他程序所用。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); 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容器上分别布局了表示职工信息的组件和操作按钮组件。图7-3 示例7.1.3 用户界面由于全部采用了GridLayout布局,所以嵌套在JPanel容器上的两个JPanel组件的大小是一样的,同样布局在第一个JPanel容器上的所有组件其大小是一样,而布局在第二个JPanel容器上的两个按钮其大小也是一样的。它们会随界面大小的改变而改变,而组件所在的行不会改变。 测试EmployeeMess2类的功能。编写一个简单的应用程序,创建一个JFrame窗口对象,将EmployeeMess2对象添加到JFrame窗口上,验证EmployeeMess2的功能。参考代码如下:import javax.swing.*;public class TestEmployeeMess2 public static void main( String args ) JFrame f1=new JFrame(); f1.add(new EmployeeMess2(); f1.setTitle(公司职员信息); f1.pack(); f1.setVisible(true); f1.setDefaultCloseOperation(3); 编译并运行测试程序,用户界面经鼠标拖动改变大小后,如图7-3所示。自由练习7.2 修改自由练习7.1,按GridLayout方式布局屏幕。运行并观看屏幕显示效果。实验示例7.1.4 职工食堂为了方便职工就餐,进行了一次“我所喜爱的主食和副食”调查,调查表中列出了一些食堂经营的主食和副食类,经营者将调查表发给各位职工,让他们推荐自己喜欢的主食和副食。经营者将根据调查结果确定其经营方向。试创建一个调查表式的选项界面。实现该示例的步骤如下: 简要分析可以把主食类和副食类分开,主食类包括米饭、馒头、卤面、涝面、包子、水饺等;副食类可分为菜类和汤类,菜类包括红烧肉、酱排骨、卤鸡、烧鸭、烧鱼、炒青菜、炒豆芽、烧茄尖等;汤类包括西红柿蛋汤、虾仁蛋汤、白木耳甜汤、玉米甜汤等。可以设计这样一个界面,按照主食、菜类和汤类划分,可以分别将它们放入Checkbox选择框中布局在界面上供选择。 根据上述简要分析,给出如下参考程序代码(EealMenu.java):/我所喜爱的主食和副食调查表程序MealMenu.javaimport java.awt.*;import javax.swing.*;public class MealMenu extends JFrame Checkbox sele1 = new Checkbox6; Checkbox sele2 = new Checkbox8; Checkbox sele3 = new Checkbox4; 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(请选择你所喜欢的食品调查表);/调用父类构造器,设置标题栏 sele10=new Checkbox(米饭); /加入主食选择菜单项 sele11=new Checkbox(馒头); sele12=new Checkbox(卤面); sele13=new Checkbox(涝面); sele14=new Checkbox(包子); sele15=new Checkbox(水饺); sele20=new Checkbox(红烧肉); /加入副食菜类选择菜单项 sele21=new Checkbox(酱排骨); sele22=new Checkbox(卤鸡); sele23=new Checkbox(烧鸭); sele24=new Checkbox(烧鱼); sele25=new Checkbox(炒青菜); sele26=new Checkbox(炒豆芽); sele27=new Checkbox(烧茄尖); sele30=new Checkbox(西红柿蛋汤); /加入副食汤类选择菜单项 sele31=new Checkbox(虾仁蛋汤); sele32=new Checkbox(白木耳甜汤); sele33=new Checkbox(玉米甜汤); panel1.setBackground(Color.white); /设置容器panel1背景 for(int i=0; isele1.length; i+) panel1.add(sele1i);/将主食选项加入到panel1容器中 panel3.setBackground(Color.pink); /设置容器panel2背景 for(int i=0; isele2.length; i+) panel2.add(sele2i);/将菜类选项加入到panel2容器中 for(int i=0; isele3.length; i+) panel3.add(sele3i);/将汤类选项加入到panel3容器中 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容器组件。图7-4 示例7.1.4 用户界面 测试EealMenu类的功能。编写一个简单的应用程序,创建EealMenu对象,验证EealMenu的功能。参考代码如下:public class TestMealMenu public static void main( String args ) new MealMenu(); 编译并运行测试程序,执行结果如图7-4所示。自由练习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(打印所有信息); /定义菜单项对象 JMenuItem prt_part=new JMenuItem(打印指定信息); /. JMenuItem prt_one=new JMenuItem(打印指定员工的信息); /. JMenu help=new JMenu(帮助); /定义帮助菜单对象 JMenuItem info=new JMenuItem(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山东省菏泽市鄄城县九年级英语第一学期期末检测试题含解析
- 2026届贵州省贵阳市九年级英语第一学期期末监测试题含解析
- 2026届广西河池市环江县英语九年级第一学期期末质量跟踪监视试题含解析
- 2026届湖南省长沙广益中学九年级英语第一学期期末质量跟踪监视试题含解析
- 2026届山东省东阿县化学九上期末经典试题含解析
- 工程担保合同协议书范本7篇
- 易班网建设汇报
- 公司行政部组织安全培训课件
- 公司营业执照课件
- 法务工作总结和工作计划
- 代发客户如何做经营分析
- 冠状动脉搭桥手术后的运动康复指导与介绍
- 延长保修协议书 保修期延保承诺书
- GB/T 5008.2-2023起动用铅酸蓄电池第2部分:产品品种规格和端子尺寸、标记
- Unit3+Understanding+ideas+The+New+Age+of+Invention外研版(2019)高中英语必修第三册
- 钢结构深化设计工作流程
- 落地式钢管脚手架验收记录表
- GA 1814.2-2023铁路系统反恐怖防范要求第2部分:旅客列车
- 个人养老保险重复缴费退费申请表
- 大气污染控制工程课程设计 车间除尘系统设计说明书1
- GA/T 1788.3-2021公安视频图像信息系统安全技术要求第3部分:安全交互
评论
0/150
提交评论