图2.13 People类与其他类间交互关系
以下是UML图中有关数据和方法的详细说明。 1)成员变量
?name是用户的名字。 ?time是用户的用时。 2)方法
?getTime()方法返回time。 ?getName()方法返回name。
?compareTo(Object)是comparable接口中的方法,其操作是确定People对象的大小关系。
16
3编码实现
3.1 MemoryGame主类
代码:
public class MemoryGame extends JFrame implements ActionListener{
public static void main(String args[]){
new MemoryGame(); }
//声明bar菜单条 JMenuBar bar;
//声明bar创建的三个菜单对象
JMenu menuGrade,menuResult,menuIcon; //声明菜单”选择级别“的三个菜单项对象
JMenuItem oneGradeItem,twoGradeItem,threeGradeItem; //声明菜单”查看排行榜“的三个菜单项对象
JMenuItem oneGradeResult,twoGradeResult,threeGradeResult; //声明菜单”选择图标“的两个菜单项对象 JMenuItem carImageIcon,animalImageIcon; //声明文件对象
File fileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile; //声明图像文件的名字 String imageName[]; //声明测试区对象
MemoryTestArea memoryArea; //创建显示成绩的对话框
ShowRecordDialog showDiolag=null; //初始测试区中方块的数量、图片 int m=5,n=6;
final int imageNumber=7; //构造方法,为了初始化“记忆测试系统”窗口 MemoryGame(){
//创建三个文件对象
fileOneGrade=new File(\初级记忆排行榜.txt\
17
fileTwoGrade=new File(\中级记忆排行榜.txt\fileThreeGrade=new File(\高级记忆排行榜.txt\//创建建菜单条对象 bar=new JMenuBar(); //创建第一个菜单对象
menuGrade=new JMenu(\选择级别\//创建三个菜单项对象
oneGradeItem=new JMenuItem(\初级\ twoGradeItem=new JMenuItem(\中级\ threeGradeItem=new JMenuItem(\高级\
menuGrade.add(oneGradeItem);//向“选择级别”菜单中增加“初级”选项
menuGrade.add(twoGradeItem);//向“选择级别”菜单中增加“中级”选项
menuGrade.add(threeGradeItem);//向“选择级别”菜单中增加“高级”选项
//创建第二个菜单对象
menuResult=new JMenu(\查看排行榜\ //创建三个菜单项对象
oneGradeResult=new JMenuItem(\初级排行榜\ twoGradeResult=new JMenuItem(\中级排行榜\ threeGradeResult=new JMenuItem(\高级排行榜\
menuResult.add(oneGradeResult);//向“查看排行榜”菜单中增加“初级排行榜”选项
menuResult.add(twoGradeResult);//向“查看排行榜”菜单中增加“中级级排行榜”选项
menuResult.add(threeGradeResult);//向“查看排行榜”菜单中增加“高级排行榜”选项
//创建第三个菜单对象
menuIcon=new JMenu(\选择图标\ //创建2个菜单项对象
carImageIcon=new JMenuItem(\汽车图标\
18
animalImageIcon=new JMenuItem(\动物图标\
menuIcon.add(carImageIcon);//向“选择图标”菜单中增加“汽车图标”选项
menuIcon.add(animalImageIcon);//向“选择图标”菜单中增加“动物图标”选项
bar.add(menuGrade);//向菜单条中增加“选择级别”菜单 bar.add(menuResult);//向菜单条中增加“查看排行榜”菜单 bar.add(menuIcon);//向菜单条中增加“选择图标”菜单
setJMenuBar(bar);//创建bar菜单条
setBounds(100,100,400,360);//设置出现在屏幕上时的初始位置(100,100)和大小
setVisible(true);//设置窗口可见
oneGradeItem.addActionListener(this);//菜单”初级“项注册监视器
twoGradeItem.addActionListener(this);//菜单”中级“项注册监视器
threeGradeItem.addActionListener(this);//菜单”高级“项注册监视器
oneGradeResult.addActionListener(this);//菜单”初级排行榜“项注册监视器
twoGradeResult.addActionListener(this);//菜单”中级级排行榜“项注册监视器
threeGradeResult.addActionListener(this);//菜单”高级排行榜“项注册监视器
animalImageIcon.addActionListener(this);//菜单”动物图标“项注册监视器
carImageIcon.addActionListener(this);//菜单”汽车图标“项注册监视器
//当”初级记忆排行榜.txt“文件不存在时,创建该文件 if(!fileOneGrade.exists()){ try { fileOneGrade.createNewFile();//以免发生异常
19
}
catch(IOException exp){} }
////当”中级记忆排行榜.txt“文件不存在时,创建该文件 if(!fileTwoGrade.exists()){ try { fileTwoGrade.createNewFile();//以免发生异常 }
catch(IOException exp){} }
////当”高级记忆排行榜.txt“文件不存在时,创建该文件 if(!fileThreeGrade.exists()){ try { fileThreeGrade.createNewFile();//以免发生异常 }
catch(IOException exp){} }
//创建测试区对象
memoryArea=new MemoryTestArea(); //初始化图片的数量
imageName=new String[imageNumber]; //将图片名字保存到imageName[]数组中 for(int i=0;i gradeFile=fileOneGrade; //调用类MemoryTestArea的initBlock方法初始化图标 memoryArea.initBlock(m,n,imageName,gradeFile); //将组件memoryArea增加到中间区域 add(memoryArea,BorderLayout.CENTER); //显示成绩对话框 showDiolag=new ShowRecordDialog(); //添加组件memoryArea后,让容器调用validate()方法,保证容器中的组件能正常显示 validate(); 20