《Java程序设计项目化教程 教学课件 ppt 作者 陈芸_第12章》由会员分享,可在线阅读,更多相关《Java程序设计项目化教程 教学课件 ppt 作者 陈芸_第12章(88页珍藏版)》请在金锄头文库上搜索。
1、第12章 任务12设计考试功能模块,12.1 任务描述 12.2 技术要点 12.3 任务实施,12.1 任 务 描 述 本章的任务是设计考试功能模块。当考生输入正确的用户口令和密码后,进入的是图12-1所示的考试界面一。其中菜单栏包括【工具】、【帮助】、【退出】三项。【工具】中仅含一个【计算器】,如图12-2所示。【帮助】菜单下包括【版本】和【关于】,如图12-3所示。选择【退出】,可以退出考试系统。,图12-1 考试界面一,图12-2 考试界面二,图12-3 考试界面三,点击【开始考试】按钮,时钟开始倒计时,同时在界面上显示第一题,通过按【上一题】、【下一题】按钮可以显示所有试题,如图12
2、-4所示。若当前已经是最后一题,再按【下一题】按钮,系统将显示提示,如图12-5。按【提交试卷】按钮后,屏幕上将显示此次考试的成绩,如图12-6所示。,图12-4 考试界面四,图12-5 考试界面五,图12-6 考试界面六,12.2 技 术 要 点 12.2.1 菜单 在实际应用中,菜单作为图形用户界面的常用组件,为用户操作软件提供了更大的便捷,有效地提高了工作效率。菜单与其他组件不同,无法直接添加到容器的某一位置,也无法用布局管理器对其加以控制,菜单通常出现在应用软件的顶层窗口中。在Java应用程序中,一个完整的菜单是由菜单栏、菜单和菜单项组成的。如图12-7所示,Java提供了五个实现菜单
3、的类:JMenu、JMenuuBar、JMenuItem、JCheckBoxMenuItem和JRadioButtonMenuItem。,图12-7 菜单类的层次结构,创建菜单的具体步骤为:首先创建菜单栏(JMenuBar),并将其与指定主窗口关联;创建菜单(JMenu)以及子菜单,将其添加到指定菜单栏;创建菜单项,并将菜单项加入到子菜单或菜单中。 1菜单栏(JMenuBar类) 菜单栏JMenuBar类中仅包含有一个缺省构造函数和多个常用方法,如表12-1所示。,表12-1 JMenuBar类的常用构造函数及方法,菜单栏对象创建好后,可以通过JFrame类的setJMenu Bar()方法将
4、其添加到顶层窗口JFrame中,效果如图12-8所示。 JFrame fr=new JFrame(); JMenuBar bar = new JMenuBar(); /添加菜单栏到指定窗口 fr.setJMenuBar(bar); 2菜单(JMenu类) 创建好菜单栏后,我们接着需创建菜单JMenu。JMenu的构造函数及常用方法如表12-2所示。,图12-8 菜单示例一,表12-2 JMenu类的常用构造函数及方法,例如: JMenu fileMenu = new JMenu(“文件”); JMenu formatMenu = new JMenu(“格式”); bar.add(fileMen
5、u ); bar.add(editMenu); JMenu是可以连接到JMenuBar对象或者其他JMenu对象上的菜单。直接添加到JMenuBar上的菜单叫做顶层菜单,连接到其他JMenu对象上的菜单称为子菜单。典型的非顶层JMenu都有右箭头标记,表明当用户选择该JMenu时,在JMenu旁还会弹出子菜单,如图12-9、12-10所示,创建方法参见12.3.3节的内容。,图12-9 菜单示例二,图12-10 菜单示例三,3菜单项(JMenuItem类) 菜单项通常代表一个菜单命令,是JMenuItem类创建的。如图12-7所示JMenuItem直接继承了AbstractButton类,因此
6、具有AbstractButton的许多特性,与JButton类非常类似。例如,当我们选择某个菜单项时,就如同按下按钮触发Active Event事件。 JMenuItem类的构造函数及常用方法如表12-3所示。,表12-3 JMenuItem类的构造函数及常用方法,例如:创建如图12-11所示的菜单项。 newItem = new JMenuItem(“新建“); exitItem = new JMenuItem(“退出“); fileMenu.add(newItem); fileMenu.add exitItem);,图12-11 菜单示例四,1) 分隔线、热键和快捷键 Java通过提供分隔
7、线、热键和快捷键等功能,为用户的操作带来了便利。分隔线通常用于对同一菜单下的菜单项进行分组,使得菜单功能的显示更加清晰。JMenuItem类中提供addSeparator()方法创建分隔线。 例如: fileMenu.add(nwItem); fileMenu. addSeparator() ; /在菜单项“新建”和“退出”之间加分隔线 fileMenu.add (exitItem);,热键显示为带有下划线的字母,快捷键则显示为菜单项旁边的组合键。 例如: /设置“文件”菜单项的热键为“F” fileMenu = new JMenu( “文件(F)“); fileMenu.setMnemoni
8、c(F); /设置“格式”菜单项的热键为“O” formatMenu = new JMenu( “格式(O)“ ); formatMenu.setMnemonic( O ); /设置“新建”菜单项的快捷键为“CtrlN” newItem.setAccelerator(KeyStroke.getKeyStroke(,KeyEvent.VK_N, InputEvent.CTRL_MASK); /设置“Exit”菜单项的快捷键为“CtrlE” exitItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E, InputEvent.CTRL_
9、MASK); 2) 单选按钮菜单项(JRadioButtonMenuItem类) 菜单项中的单选按钮是由JRadioButtonMenuItem类创建的,在菜单项中实现多选一。单击选定的单选按钮不会改变其状态,单击未选定的单选按钮时将取消选定此前选定的单选按钮。,例如:图12-9的关键代码如下。 JRadioButtonMenuItem jrb,jru,jrr; colorMenu = new JMenu( “颜色“ ); colorMenu.add(jrb=new JRadioButtonMenuItem(“黑色“); colorMenu.add(jru=new JRadioButtonMe
10、nuItem(“蓝色“); colorMenu.add(jrr=new JRadioButtonMenuItem(“红色“); colorGroup = new ButtonGroup(); colorGroup.add(jrb);,colorGroup.add(jru); colorGroup.add(jrr); formatMenu.add( colorMenu ); 3) 复选框菜单项(JCheckBoxMenuItem类) 菜单项中的复选框是由JCheckBoxMenuItem类创建的,单击并释放JCheckBoxMenuItem时,菜单项的状态会变为选定或取消选定。,例如:图12-1
11、0的关键代码如下。 JMenu fontMenu = new JMenu( “字型“ ); fontMenu.add( new JCheckBoxMenuItem(“粗体“); fontMenu.add( new JCheckBoxMenuItem(“斜体“); formatMenu.add( fontMenu );,12.2.2 菜单的事件处理 菜单的设计看似复杂,但它却只会触发最简单的事件ActionEvent。因此当我们选择了某个JMenuItem类的对象时便触发了ActionEvent事件,在程序例12-1中,当用户选中【新建】菜单项时,系统将弹出对话框;选择【退出】菜单项时,系统将退
12、出。运行效果如图12-12所示。,图12-12 菜单示例五,例12-1 JMenuDemo.java 1 import java.awt.*; 2 import java.awt.event.*; 3 import javax.swing.*; 4 public class JMenuDemo extends JFrame implements ActionListener 5 JMenu fileMenu,formatMenu , colorMenu,fontMenu ; 6 private JMenuItem newItem,exitItem; 7 private JRadioButton
13、MenuItem colorItems; 8 private JCheckBoxMenuItem styleItems; 9 private ButtonGroup colorGroup;,10 public JMenuDemo() 11 super( “JMenus Demo“ ); 12 fileMenu = new JMenu( “文件(F)“); 13 fileMenu.setMnemonic( F ); 14 newItem = new JMenuItem( “新建“ ); 15 newItem.setAccelerator(KeyStroke.get KeyStroke(KeyEv
14、ent.VK_N, InputEvent.CTRL_MASK); 16 newItem.addActionListener(this); 17 fileMenu.add( newItem ); 18 exitItem = new JMenuItem( “退出“ );,19 exitItem.setAccelerator(KeyStroke. getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK); 20 exitItem.addActionListener(this); 21 fileMenu.add( exitItem ); 22 JMenuBar
15、 bar = new JMenuBar(); 23 setJMenuBar( bar ); 24 bar.add( fileMenu ); 25 formatMenu = new JMenu( “格式(O)“ ); 26 formatMenu.setMnemonic( O ); 27 String colors = “黑色“, “蓝色“, “红色“; 28 colorMenu = new JMenu( “颜色“ );,29 colorMenu.setMnemonic( C ); 30 colorItems = new JRadioButtonMenuItem colors.length ; 31 colorGroup = new ButtonGroup(); 32 for ( int count = 0; count colors.length; count+ ) 33 colorItems count =new JRadioButtonMenuItem( colors count ); 34 colorMenu.add( colorItems count ); 35 colorGroup.add( colorItems count ); 36 37 co