Java实验报告
学院:计算机科学与技术学院 班级: 软件工程 班 学号: 姓名:
一、 实验名称:算术测试
二 、实验目的:学习处理ActionEvent事件
三 、实验要求:编写一个算术测试小软件,用来训练小学生的算术能力。
程序有3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。
四 、实验过程:
package cn.edu.xust.qingzhi; import java.awt.*; import java.awt.event.*; import java.util.Random;
import javax.swing.*; public class MainClass { public static void main(String[] args)
{ }
ComputerFrame frame; frame=new ComputerFrame(); frame.setTitle(\算术测试\frame.setBounds(100,100,650,180);
}
class ComputerFrame extends JFrame {
JMenuBar menubar; JMenu choiceGrade;
JMenuItem grade1,grade2;
JTextField textOne,textTwo,textResult; JButton getProblem,giveAnwser; JLabel operatorLabel,message; Teacher teacherZhang; ComputerFrame() {
teacherZhang=new Teacher(); teacherZhang.setMaxInteger(20); setLayout(new FlowLayout()); menubar=new JMenuBar();
choiceGrade=new JMenu(\选择级别\ grade1=new JMenuItem(\幼儿级别\ grade2=new JMenuItem(\儿童级别\
grade1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
teacherZhang.setMaxInteger(10); } }); grade2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
teacherZhang.setMaxInteger(50);
} });
choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade);
setJMenuBar(menubar);
textOne=new JTextField(5);//【代码1】创建textone,其可见字符长是5; textTwo=new JTextField(5); textResult=new JTextField(5);
operatorLabel=new JLabel(\
operatorLabel.setFont(new Font(\ message=new JLabel(\你还没有回答呢\ getProblem=new JButton(\获取题目\ giveAnwser=new JButton(\确认答案\
add(getProblem); add(textOne);
add(operatorLabel); add(textTwo);
add(new JLabel(\ add(textResult);
add(giveAnwser); add(message);
textResult.requestFocus(); textOne.setEditable(false);
textTwo.setEditable(false); getProblem.setActionCommand(\
textResult.setActionCommand(\ giveAnwser.setActionCommand(\
teacherZhang.setJTextField(textOne,textTwo,textResult);
teacherZhang.setJLabel(operatorLabel,message);
getProblem.addActionListener(teacherZhang); //【代码2】将teacherZhang注册为
getProblem的ActionEvent事件监听器 giveAnwser.addActionListener(teacherZhang);//【代码3】将teacherZhang注册为giveAnwser的ActionEvent事件监听器 textResult.addActionListener(teacherZhang);//【代码4】将teacherZhang注册为textResult的ActionEvent事件监听器
}
setVisible(true);
validate();
setDefaultCloseOperation(DISPOSE_ON_CLOSE); }
class Teacher implements ActionListener {
int numberOne,numberTwo; String operator=\
boolean isRight;
Random random; //用于给出随机数 int maxInteger; //题目中最大的整数 JTextField textOne,textTwo,textResult; JLabel operatorLabel,message; Teacher(){ random=new Random();
}
public void setMaxInteger(int n){ maxInteger=n; }
public void actionPerformed(ActionEvent e){
String str=e.getActionCommand(); if(str.equals(\ numberOne=random.nextInt(maxInteger)+1;//1到maxInteger之间的随机数 }
numberTwo=random.nextInt(maxInteger)+1;
double d=Math.random(); //获取0-1之间的随机数 if(d>=0.5) operator=\else operator=\
textOne.setText(\textTwo.setText(\operatorLabel.setText(operator); message.setText(\请回答:\textResult.setText(null);
else if(str.equals(\
String anwser=textResult.getText(); try{
int result=Integer.parseInt(anwser); if(operator.equals(\
if(result==numberOne+numberTwo) message.setText(\你回答正确\
else
message.setText(\你回答错误\
}
else if (operator.equals(\ if(result==numberOne-numberTwo) message.setText(\你回答正确\
else
message.setText(\你回答错误\ } }
}
}
catch(NumberFormatException ex){ message.setText(\请输入数字字符\ }
}
public void setJTextField(JTextField...t){ textOne=t[0]; } }
textTwo=t[1]; textResult=t[2];
public void setJLabel(JLabel...label){
operatorLabel=label[0]; message=label[1];
五 、实验结果:
六 、实验总结:通过这次的实验我学会了组件的属性和功能,还
有处理组件上发生的界面事件,其中还要掌握事件源,监视器,处理事件的接口等等。学会了使用随机函数。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育java-实验报告- 副本 全文阅读和word下载服务。
相关推荐: