第七章 图形用户界面
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