usedTime=usedTime+10; try{
//让线程hintThead启动 hintThead.start(); }
catch(IllegalThreadStateException ex){} }
//如果事件源是计时器“timer” if(e.getSource()==timer){ }
//用户用时加一 usedTime++; //显示用户用时
showUsedTime.setText(\您的用时:\秒\}
/*该方法将测试区中的未显示图标的各个Block对象上的图标持续显示public void run(){
allBlockList.get(i).setIcon(allBlockList.get(i).getOpenStateIcon(
try{ }
catch(InterruptedException exp){} //遍历所有测试区图标
for(int i=0;i
//给数组表allBlockList的每个单元注册监视器 allBlockList.get(i).addActionListener(this); //线程等待1200毫秒 Thread.sleep(1200); //遍历所有测试区图标
for(int i=0;i
//将测试区中的每一个图标显示
1200毫秒*/
));
//遍历所有测试区图标
for(int i=0;i
31
}
if(!openBlockList.contains(allBlockList.get(i)))
//设置图标为空
allBlockList.get(i).setIcon(null);
}
3.3 Block类
代码:
class Block extends JButton {
//方块上的图标
ImageIcon openStateIcon; //该方法设置它上面的图标
public ImageIcon getOpenStateIcon(){
//返回openStateIcon return openStateIcon; }
//该方法获得它上面的图标
public void setOpenStateIcon(ImageIcon icon){
//将icon传给openStateIcon openStateIcon=icon; }
}
3.4 Record类
代码:
class Record extends JDialog implements ActionListener{
//用户的用时 int time = 0;
//声明用户用来输入名字的\文本框\对象
JTextField yourName; //声明标签 JLabel label;
//声明\确定\和“取消”按钮对象
32
JButton enter,cancel ; //级别文件
File gradeFile = null ;
//构造方法,构造“保存成绩”对话框 public Record(){
//设置出现在屏幕上时的初始位置(100,100)和大小 setBounds(100,100,330,160); //设置窗口不可调整大小
setResizable(false);
//该窗口打开时其他窗口都被屏蔽了,点击程序的其他窗口是不允许的 setModal(true); //设置窗口为可见 setVisible(false); //创建“确定”按钮对象 enter=new JButton(\确定\ //创建“取消”按钮对象 cancel=new JButton(\取消\ //创建文本框对象
yourName=new JTextField(8); //设置文本框对象中的文本为“匿名” yourName.setText(\匿名\ //给“确定”按钮注册监视器 enter.addActionListener(this); //给“取消”按钮注册监视器 cancel.addActionListener(this);
//将容器设置为行为“2”,列为“1”的GridLayout布局 setLayout(new GridLayout(2,1)); //创建标签对象 label=new JLabel( );
//添加标签到Record类创建的对话框中 add(label); //声明和创建容器p JPanel p=new JPanel( );
//在容器p上添加“yourName”文本框
33
p.add(yourName);
//在容器p上添加“确定”按钮 p.add(enter);
//在容器p上添加“取消”按钮 p.add(cancel);
//添加容器p到Record类创建的对话框中 add(p) ; } /*
当用户成功单击出相应级别所要求的图标相同的方块后,将调用setGradeFile()
将级别文件传递给Record对话框gradeFile */
public void setGradeFile(File f){
gradeFile = f;
//给Record类创建的对话框添加标题
setTitle(\保存成绩到\ //给Record类创建的对话框添加标签
label.setText(\保存成绩到\
//添加组件后,让容器调用validate()方法,保证容器中的组件能正常显示
validate(); } /*
当用户成功单击出相应级别所要求的图标相同的方块后,测试区弹出Record对话框,
将调用setTime(int)方法,将测试区记录的用户用时传递给Record对话框中的time */
public void setTime(int time) { }
public void actionPerformed(ActionEvent e) {
//如果事件源是“确定”按钮 if(e.getSource() == enter ){ this.time=time ;
34
LinkedList
//以“读写”方式打开当前目录下的文件gradeFile
RandomAccessFile out=new RandomAccessFile(gradeFile,\
out.seek(out.length()) ;
//将用户在文本框yourName中输入的名字保存到gradeFile文件中
out.writeUTF(yourName.getText()); //将用户的time的值保存到gradeFile文件中 out.writeInt(time); //关闭当前对话框 out.close(); } } }
catch(Exception event){ }
//设置对话框不可见 setVisible(false) ; }
//如果事件源是“取消”按钮 if(e.getSource()==cancel){
//设置窗口不可见 setVisible(false) ; }
3.5 ShowRecordDialog类
代码:
class ShowRecordDialog extends JDialog implements ActionListener{
//声明对话框要读取的文件,该文件存储成绩 File gradeFile; //声明按钮
JButton clear;
//声明从gradeFile文件中读出的成绩为空
35