基于java swing實(shí)現(xiàn)答題系統(tǒng)
更新時(shí)間:2018年01月16日 15:24:37 作者:Koow
這篇文章主要為大家詳細(xì)介紹了基于java swing實(shí)現(xiàn)答題系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了java swing實(shí)現(xiàn)答題系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

如上圖所示,代碼親測可用,如下:
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用來跳轉(zhuǎn)
private int item1 = 0;
private int item2 = 1;
private int item3 = 2;
private int item4 = 3;
private JLabel[] FormulaLabels; // 用來存放表達(dá)式的各個(gè)項(xiàng)
private List<String> allResult; // 用來存放隨機(jī)出來的結(jié)果
private JTextField[] userResults; // 用來讓用戶輸入結(jié)果
private JLabel[] judge; // 用來顯示圖標(biāo),以顯示用戶輸入的結(jié)果是否正確
private List<String> inputResults = null; // 可以不要
private JTextField scoreField = null;
private int textCount = 1; // 用來記錄當(dāng)前焦點(diǎn)的位置
public static void main(String[] args){
sa s=new sa();
}
public sa() {
// TODO Auto-generated constructor stub
inputResults = new ArrayList<String>();
// 實(shí)例化
title = new JLabel("題目很簡單,認(rèn)真答哦!~(每題1分,答對加1分,答錯(cuò)不扣分!)");
submit = new JButton("提交");
submit.addActionListener(this);
GridLayout layout = new GridLayout(21, 6);
center = new JPanel(layout);
// 調(diào)用方法實(shí)例化方法
initLables();
initUserRestult();
initJudge();
// 將各項(xiàng)填入到center面板(GridLayout)
int count = 1;
int formulaCount = 0;
int userResultsCount = 0;
int judgeCount = 0;
while (count <= 120) {
// 判斷count%6,確定要填哪個(gè)組件
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("簡單測試系統(tǒng)");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
userResults[0].requestFocus();
}
/**
* 這個(gè)方法用來初始化算式各項(xiàng)的數(shù)組
*/
private void initLables() {
int sum;
int firstNumber;
int secondNumber;
allResult = new ArrayList<String>();
// 建立算式標(biāo)簽
this.FormulaLabels = new JLabel[80];
// 將數(shù)組中的每一個(gè)標(biāo)簽都實(shí)例化
for (int i = 0; i < 80; i++) {
FormulaLabels[i] = new JLabel();
}
// 將表達(dá)式各項(xiàng)賦值內(nèi)容,并將隨機(jī)數(shù)的和算出結(jié)果存入Arraylist中,以便后期核對結(jié)果使用
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());
// }
}
/**
* 這個(gè)方法用來實(shí)例化userResults數(shù)組,并實(shí)例化里面的每一個(gè)JTextField
*/
private void initUserRestult() {
userResults = new JTextField[20];
for (int i = 0; i < 20; i++) {
userResults[i] = new JTextField();
userResults[i].setSize(20, 20);
// 后加的監(jiān)聽
userResults[i].addKeyListener(this);
}
}
/**
* 這個(gè)方法用來實(shí)例化judge數(shù)組,并將里面的每一個(gè)Label實(shí)例化
*/
private void initJudge() {
judge = new JLabel[20];
for (int i = 0; i < 20; i++) {
judge[i] = new JLabel("好好算呦");
}
}
// 實(shí)現(xiàn)監(jiān)聽方法,當(dāng)用戶點(diǎn)擊提交后要做的事情
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int score = 0;
for (int i = 0; i < 20; i++) {
// 將用戶輸入的結(jié)果全部獲取,存入一個(gè)ArrayList中,可以不要
inputResults.add(userResults[i].getText().toString().trim());
System.out.println(userResults[i].getText().toString());
// 取出來用戶輸入的答案和之前算好的結(jié)果去比較,不對就把后面的標(biāo)簽設(shè)置為回答錯(cuò)誤,
// 如果正確就設(shè)置為回答正確
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("回答錯(cuò)誤");
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
}
}
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于spring@aspect注解的aop實(shí)現(xiàn)過程代碼實(shí)例
這篇文章主要介紹了基于spring@aspect注解的aop實(shí)現(xiàn)過程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
idea配置連接數(shù)據(jù)庫的超詳細(xì)步驟
這篇文章主要介紹了idea配置連接數(shù)據(jù)庫的超詳細(xì)步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
mybatis plus自動(dòng)生成器解析(及遇到的坑)
這篇文章主要介紹了mybatis-plus自動(dòng)生成器及遇到的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
java基于Des對稱加密算法實(shí)現(xiàn)的加密與解密功能詳解
這篇文章主要介紹了java基于Des對稱加密算法實(shí)現(xiàn)的加密與解密功能,結(jié)合實(shí)例形式詳細(xì)分析了Des加密算法的功能、原理、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-01-01

