基于java swing实现答题系统

本文实例为大家分享了java swing实现答题系统的具体代码,供大家参考,具体内容如下

如上图所示,代码亲测可用,如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random; 

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField; 

/**
 * 2017-01-09
 * @author Koow
 *
 */
public class sa extends JFrame implements ActionListener, KeyListener {
  private JLabel title = null;
  private JButton submit = null;
  private JPanel center = null;
  // items用来跳转
  private int item1 = 0;
  private int item2 = 1;
  private int item3 = 2;
  private int item4 = 3;
  private JLabel[] FormulaLabels; // 用来存放表达式的各个项
  private List<String> allResult; // 用来存放随机出来的结果
  private JTextField[] userResults; // 用来让用户输入结果
  private JLabel[] judge; // 用来显示图标,以显示用户输入的结果是否正确
  private List<String> inputResults = null; // 可以不要
  private JTextField scoreField = null;
  private int textCount = 1; // 用来记录当前焦点的位置 

  public static void main(String[] args){
    sa s=new sa(); 

  } 

  public sa() {
    // TODO Auto-generated constructor stub
    inputResults = new ArrayList<String>();
    // 实例化
    title = new JLabel("题目很简单,认真答哦!~(每题1分,答对加1分,答错不扣分!)");
    submit = new JButton("提交");
    submit.addActionListener(this);
    GridLayout layout = new GridLayout(21, 6);
    center = new JPanel(layout);
    // 调用方法实例化方法
    initLables();
    initUserRestult();
    initJudge();
    // 将各项填入到center面板(GridLayout)
    int count = 1;
    int formulaCount = 0;
    int userResultsCount = 0;
    int judgeCount = 0;
    while (count <= 120) {
      // 判断count%6,确定要填哪个组件
      if (count % 6 == 1 || count % 6 == 2 || count % 6 == 3 || count % 6 == 4) {
        center.add(FormulaLabels[formulaCount]);
        formulaCount++;
      } else if (count % 6 == 5) {
        center.add(userResults[userResultsCount]);
        userResultsCount++;
      } else if (count % 6 == 0) {
        center.add(judge[judgeCount]);
        judgeCount++;
      }
      count++;
    }
    center.add(new JLabel());
    center.add(new JLabel());
    center.add(new JLabel("总分:"));
    scoreField = new JTextField();
    scoreField.setEditable(false);
    center.add(scoreField);
    center.add(new JLabel());
    center.add(new JLabel());
    this.add(center, BorderLayout.CENTER);
    // 添加组件
    this.add(submit, BorderLayout.SOUTH);
    this.add(title, BorderLayout.NORTH);
    // 显示
    this.setLocation(400, 10);
    this.setVisible(true);
    this.setSize(500, 700);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("简单测试系统");
    try {
      Thread.sleep(500);
    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    userResults[0].requestFocus();
  } 

  /**
   * 这个方法用来初始化算式各项的数组
   */
  private void initLables() {
    int sum;
    int firstNumber;
    int secondNumber;
    allResult = new ArrayList<String>();
    // 建立算式标签
    this.FormulaLabels = new JLabel[80];
    // 将数组中的每一个标签都实例化
    for (int i = 0; i < 80; i++) {
      FormulaLabels[i] = new JLabel();
    }
    // 将表达式各项赋值内容,并将随机数的和算出结果存入Arraylist中,以便后期核对结果使用
    while (item4 < 80) {
      firstNumber = new Random().nextInt(99) + 1;
      FormulaLabels[item1].setText(String.valueOf(firstNumber));
      FormulaLabels[item2].setText("+");
      secondNumber = new Random().nextInt(99) + 1;
      FormulaLabels[item3].setText(String.valueOf(secondNumber));
      FormulaLabels[item4].setText("=");
      sum = firstNumber + secondNumber;
      allResult.add(String.valueOf(sum));
      item1 += 4;
      item2 += 4;
      item3 += 4;
      item4 += 4;
    }
    // for(int i=0;i<80;i++){
    // System.out.println(FormulaLabels[i].getText());
    // }
  } 

  /**
   * 这个方法用来实例化userResults数组,并实例化里面的每一个JTextField
   */
  private void initUserRestult() {
    userResults = new JTextField[20];
    for (int i = 0; i < 20; i++) {
      userResults[i] = new JTextField();
      userResults[i].setSize(20, 20);
      // 后加的监听
      userResults[i].addKeyListener(this);
    }
  } 

  /**
   * 这个方法用来实例化judge数组,并将里面的每一个Label实例化
   */
  private void initJudge() {
    judge = new JLabel[20];
    for (int i = 0; i < 20; i++) {
      judge[i] = new JLabel("好好算呦");
    }
  } 

  // 实现监听方法,当用户点击提交后要做的事情
  @Override
  public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    int score = 0;
    for (int i = 0; i < 20; i++) {
      // 将用户输入的结果全部获取,存入一个ArrayList中,可以不要
      inputResults.add(userResults[i].getText().toString().trim());
      System.out.println(userResults[i].getText().toString());
      // 取出来用户输入的答案和之前算好的结果去比较,不对就把后面的标签设置为回答错误,
      // 如果正确就设置为回答正确
      String result = userResults[i].getText().toString().trim();
      if (result.equals(allResult.get(i))) {
        judge[i].setText("回答正确");
        judge[i].setForeground(Color.RED);
        score++;
      } else {
        judge[i].setText("回答错误");
        judge[i].setForeground(Color.GREEN);
      }
    }
    scoreField.setText(String.valueOf(score));
  } 

  @Override
  public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      userResults[textCount].requestFocus();
      if (textCount < 19) {
        textCount++;
      }
    }
  } 

  @Override
  public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub 

  } 

  @Override
  public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub 

  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android实现简单的答题系统
(0)

相关推荐

  • Android实现简单的答题系统

    本文实例为大家分享了Android实现答题系统的具体代码,供大家参考,具体内容如下 Question: package com.example.lenovo.exam; /** * Created by lenovo on 2017/12/4. */ //保存从数据库中读取的记录 public class Question { public String question; public String answerA; public String answerB; public String a

  • 基于java swing实现答题系统

    本文实例为大家分享了java swing实现答题系统的具体代码,供大家参考,具体内容如下 如上图所示,代码亲测可用,如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; im

  • 基于Java实现中文分词系统的示例代码

    目录 1.问题描述 2.相关工作 3.系统框架和算法设计 3.1系统整体框架 1.问题描述 中文分词 (Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词.分词就是将连续的字序列按照一定的规范重新组合成词序列的过程.我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字.句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多.困难的多. 而对于中文

  • 基于C#制作考试答题系统

    目录 效果展示: 起始页代码 考试页面代码 有图标的应用程序 效果展示: 1. 进入页面: 2. 答题界面: 3. 时间截止界面: 4. 提交界面: 起始页代码 public partial class Start : Form { public Start() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } private void

  • 基于Java swing组件实现简易计算器

    本文记录了笔者的第一个Java程序,基于Java抽象窗口工具(abstract window toolkit , AWT)和Swing(Swing属于Java Foundation Classes的一部分)实现的建议计算器,由于笔者经验有限,初学Java,代码略带bug,无法实现7+5×8之类式子的计算,只能实现算术运算符按从高到低的式子运算,部分代码略显冗杂,希望大家在评论区积极讨论完善代码! 计算器示意图 一.代码相关知识简介 JFrame(框架) 使用JFrame frame = new

  • 基于java语言实现快递系统

    本文实例为大家分享了java语言实现快递系统的具体代码,供大家参考,具体内容如下 功能介绍: 1.角色切换(快递员和普通用户) 快递员:有存快递.删除快递.修改快递信息.查看所有快递的功能. 用户:有取快递的功能 2.快递信息必须要有公司名称,快递单号及取件码信息. 涉及知识点: 1.Java 基础语法2.Java 基础数据类型3.流程控制语句(if.switch.while.do while.for.break 与 continue)4.数组 分析 1.题目要求要有存快递的功能,所以在设计时必

  • 基于Java开发实现ATM系统

    本文实例为大家分享了Java开发实现ATM系统的具体代码,供大家参考,具体内容如下 一.业务分析 通过使用Java面向对象的基础知识,开发一个ATM系统,实现存款,取款,转账,修改密码,注销账户等功能. 二.开发准备 首先,创建一个用户类,为建立用户对象做准备,用户类主要包括用户卡号(系统随机生成),用户名,账户密码,余额,取现额度.并搭建构造器,以及get,set. public class user {     private String cardId ;     //卡号     pri

  • 情人节写给女朋友Java Swing代码程序

    马上又要到情人节了,再不解风情的人也得向女友表示表示.作为一个程序员,示爱的时候自然也要用我们自己的方式. 这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定义了一个对话框,让女友选择是不是喜欢自己.如果她选了"是",皆大欢喜,如果她想选"不",哼哼...看一下截图吧. 代码效果图: 接下来不废话,直接上代码了.新版本已上传,也欢迎大家到我的github上下载和改进代码(点此转到github). 另外就是因为这个代码当时是在

  • 基于java实现租车管理系统

    概述 基于java + swing + JFrame 的图书馆管理系统,租车,还车,管理员管理用户,付款等. 部分代码 public class Login extends JFrame { private static final long serialVersionUID = 1L; /** * 登录窗体 */ public Login() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 设置顶部提示文字和主窗

  • Java swing读取txt文件实现学生考试系统

    本文实例为大家分享了Java swing读取txt文件实现学生考试系统的具体代码,供大家参考,具体内容如下 主要实现了一个简单的倒计时答题系统 源码Testquestion 类 public class Testquestion { private String questionText ="";//定义题目 private String standardkey = "";// 定义正确答案 private String selectKey =""

  • java swing实现电影购票系统

    本文实例为大家分享了java swing实现电影购票系统的具体代码,供大家参考,具体内容如下 首先系统分为前台用户登录注册和后台管理员进行管理 项目采用三层架构思想 系统首页 电影详情以及查看评论 查看所有电影场次 购买影票选择座位 查看影票以及点击进入评论 对购买的影票进行想评论 接下来看看管理员 管理员进行操作,几个按钮样式差不错,就不全贴了.感觉已经贴的挺详细的了. 代码的话就贴一些通用的访问数据库的具有通用的增删改查的代码. /** * 执行增删改的操作 * @param sql * @

随机推荐