* Copyright (c) 2012, 煙臺大學計算機學院學生
* All rights reserved.
* 作 者: 劉鎮
* 完成日期: 2012 年 11 月 07日
* 版 本 號: 2.012
* 對任務及求解方法的描述部分
* 問題描述:編寫一個算術測試小軟件。程序組成:編寫一個Teacher類負責給出算術題目,隨機給出兩個整數並進行運算,並判斷回答者的答案是否正確;編寫一個GUI類ComputerFrame,回答者可以通過GUI看到題目並給出答案;編寫一個程序執行入口運行該軟件。
*代碼部分:
ComputerFrame.java:
package lz_11w;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;
class MyPanel extends Panel implements ActionListener{
JButton button;
JTextField text1, text2, text3;
JLabel label1, label2;
public int resultNum;
MyPanel()
{
button = new JButton("獲取題目");
button.addActionListener(this);
text1 = new JTextField(5);
text1.setEditable(false);
text2 = new JTextField(5);
text2.setEditable(false);
text3 = new JTextField(5);
label1 = new JLabel("+");
label2 = new JLabel("=");
this.add(button);
this.add(text1);
this.add(label1);
this.add(text2);
this.add(label2);
this.add(text3);
}
public void actionPerformed(ActionEvent e) {
Random random = new Random();
int num1 = random.nextInt(10);
int num2 = random.nextInt(10);
resultNum = 0;
int sizeof = random.nextInt(4);
String str = "";
switch(sizeof)
{
case 0:
str = "+";
resultNum = num1 + num2;
break;
case 1:
str = "-";
resultNum = num1 - num2;
break;
case 2:
str = "*";
resultNum = num1 * num2;
break;
case 3:
str = "/";
resultNum = num1 / num2;
break;
}
label1.setText(str);
text1.setText(Integer.toString(num1));
text2.setText(Integer.toString(num2));
}
}
public class ComputerFrame extends JFrame implements ActionListener{
MyPanel panel;
JButton button1;
JLabel label3;
ComputerFrame()
{
setLayout(new FlowLayout());
panel = new MyPanel();
button1 = new JButton("確認答案");
button1.addActionListener(this);
label3 = new JLabel();
this.add(panel);
this.add(button1);
this.add(label3);
setVisible(true);
setExtendedState(Frame.MAXIMIZED_VERT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(450, 300, 380, 125);
validate();
}
public void actionPerformed(ActionEvent e) {
if (panel.text3.getText().length() == 0)
{
label3.setText("你還沒有回答呢");
}
else
{
int result = Integer.parseInt(panel.text3.getText());
if (result != panel.resultNum)
{
label3.setText("你回答錯誤");
}
else
{
label3.setText("你回答正確");
}
}
}
}
TestComputerFrame.java:
package lz_11w;
public class TextComputerFrame {
/**
* @param args
*/
public static void main(String[] args) {
ComputerFrame com = new ComputerFrame();
}
}
測試結果:
心得經驗:
把這個格式分兩部分做,一部分是Panel,另一部分在Frame,在panel中處理添加組件、命名、事件監聽。處理隨即產生題目的問題,再就是處理四種運算,最後將運算與兩個數運算,將結果與用戶輸入的比較,從而在Frame中的Button的事件處理一下,顯示處理結果。