Java Swing图形用户界面


小学数学算数出题器

所需相关知识:

GUI相关的类,组件的属性及功能,事件源、监视器、处理事件的接口


代码如下:

MainCLASS.java

package Three;
public class MainCLASS {
    public static void main(String[] args) {
        Computer COM =new Computer();
        COM.setBounds(100,100,650,180);
        COM.setTitle("算数测试");
    }
}

Computer.java

package Three;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Computer extends JFrame{
    JMenuBar menuBar;
    JMenu  choiceGrade;
    JMenuItem Grade1,Grade2;
    JTextField text1,text2,textResult;
    JButton getQuestion,giveAnswer;
    JComboBox <String> choiceFuhao;
    JLabel message;
    OperatorListener operator;// 监视器ItemEvent事件的监视器
    Count count;
    Computer(){
        choiceFuhao = new JComboBox<>();
        choiceFuhao.addItem("选择符号");
        String []a = {"+","-","*","/"};
        for (int i=0;i<a.length;i++){
            choiceFuhao.addItem(a[i]);
        }
        setLayout(new FlowLayout());
        menuBar = new JMenuBar();
        choiceGrade = new JMenu("选择难度");
        Grade1 =  new JMenuItem("简单难度");
        Grade2 =  new JMenuItem("困难难度");
        Grade1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                count.setMaxInteger(10); //简单难度为10以内的算数
            }
        });
        Grade2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                count.setMaxInteger(100); //困难难度为100以内的算数
            }
        });
        choiceGrade.add(Grade1);
        choiceGrade.add(Grade2);
        menuBar.add(choiceGrade);
        setJMenuBar(menuBar);
        text1 = new JTextField(8);
        text2 = new JTextField(8);
        textResult = new JTextField(8);
        message = new JLabel("你还没回答题目");
        getQuestion = new JButton("获取题目");
        giveAnswer = new JButton("获得答案");
        add(text1);
        add(choiceFuhao);
        add(text2);
        add(new Label("="));
        add(textResult);
        add(giveAnswer);
        add(message);
        add(getQuestion);
        textResult.requestFocus();
        text1.setEditable(false);
        text2.setEditable(false);
        getQuestion.setActionCommand("getQuestion");
        textResult.setActionCommand("answer");
        giveAnswer.setActionCommand("answer");
        operator = new OperatorListener();
        count = new Count();
        operator.setCom(this);
        choiceFuhao.addItemListener(operator);
        count.setJTextField(text1, text2, textResult);
        count.setJLabel(message);
        getQuestion.addActionListener(count);
        giveAnswer.addActionListener(count);
        textResult.addActionListener(count);
        setVisible(true);
        validate();
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    }
}

Count.java

// package Three;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;

public class Count implements ActionListener {
    int number1,number2;
    String fuhao;
    int maxInteger;
    JTextField text1,text2,textResult;
    JLabel message;
    public void setFuhao(String s){
        fuhao = s;
    }

    public void setMaxInteger(int n){
        maxInteger = n;
    }
    public void actionPerformed(ActionEvent e){
        Random random  = new Random();
        String str = e.getActionCommand();
        if (str.equals("getQuestion")){
            number1=random.nextInt(maxInteger)+1;
            number2=random.nextInt(maxInteger)+1;
            text1.setText(""+number1);
            text2.setText(""+number2);
            message.setText("请回答");
            textResult.setText(null);
        }
        else if(str.equals("answer")){
            String answer = textResult.getText();
            try {
                int result = Integer.parseInt(answer);
                if (fuhao.equals("+")){
                    if(result == number1 + number2){
                        message.setText("你回答正确");
                    }
                    else message.setText("你回答错误");
                }
                else   if (fuhao.equals("-")){
                    if(result == number1 - number2){
                        message.setText("你回答正确");
                    }
                    else message.setText("你回答错误");
                }
                else  if (fuhao.equals("*")){
                    if(result == number1 * number2){
                        message.setText("你回答正确");
                    }
                    else message.setText("你回答错误");
                }
                else  if (fuhao.equals("/")){
                    if(result == number1 /number2){
                        message.setText("你回答正确");
                    }
                    else message.setText("你回答错误");
                }
                }
            catch (NumberFormatException ex){
                message.setText("请输入答案");
            }
        }
    }
    public void setJTextField(JTextField...t){
        text1=t[0];
        text2=t[1];
        textResult=t[2];
    }
    public void setJLabel(JLabel...label){
        message=label[0];
    }
}

OperatorListener.java

// package Three;
import java.awt.event.*;
public class OperatorListener implements ItemListener{
    Computer com;
   public void setCom(Computer com){
       this.com = com;
   }

    public void itemStateChanged(ItemEvent e){
        String fuhao = com.choiceFuhao.getSelectedItem().toString();
        com.count.setFuhao(fuhao);
    }
}

运行效果:

在这里插入图片描述

在这里插入图片描述
简单难度加法:
在这里插入图片描述
困难难度加法:
在这里插入图片描述
简单乘法
在这里插入图片描述
困难乘法:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值