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

实训要求:

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

代码:

MainClass类:

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ComputerFrame 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("你回答正确");
					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];
	}
}

运行结果:

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

小结:

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

你可能感兴趣的:(Java)