Java实训——创建一个窗体程序,实现简单的数学加、减法测试。

来源:互联网 发布:音乐加快软件 编辑:程序博客网 时间:2024/05/16 01:41

实训要求:


代码:

MainClass类:

public class MainClass {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算数测试");frame.setBounds(300,400,650,180);}}

ComputerFrame类:

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame{JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame(){teacherZhang=new Teacher();teacherZhang.setMaxInteger(100);setLayout(new FlowLayout());textOne=new JTextField(5);textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new JLabel("+");operatorLabel.setFont(new Font("Arial",Font.BOLD,20));message=new JLabel("你还没回答呢");getProblem=new JButton("获取题目");giveAnswer=new JButton("确认答案");add(textOne);add(operatorLabel);add(textTwo);add(new JLabel("="));add(textResult);add(giveAnswer);add(message);add(getProblem);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand("getProblem");textResult.setActionCommand("answer");giveAnswer.setActionCommand("answer");teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);getProblem.addActionListener(teacherZhang);giveAnswer.addActionListener(teacherZhang);textResult.addActionListener(teacherZhang);setVisible(true);validate();setDefaultCloseOperation(DISPOSE_ON_CLOSE);}}

Teacher类:

import java.util.Random;import java.awt.event.*;import javax.swing.*;public 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("getProblem")){numberOne=random.nextInt(maxInteger)+1;numberTwo=random.nextInt(maxInteger)+1;double d=Math.random();if(d>=0.5)operator="+";else operator="-";textOne.setText(""+numberOne);textTwo.setText(""+numberTwo);operatorLabel.setText(operator);message.setText(null);}else if(str.equals("answer")){String answer=textResult.getText();try { int result=Integer.parseInt(answer);if(operator.equals("+")){if(result==numberOne+numberTwo)message.setText("你回答正确");elsemessage.setText("你回答错误");}else if(operator.equals("-")){if(result==numberOne-numberTwo)message.setText("你回答正确");elsemessage.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];}}

运行结果:


小结:

学习了监视器的使用方法。

阅读全文
0 0