一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于java swing實現答題系統

基于java swing實現答題系統

2021-03-23 13:32Koow Java教程

這篇文章主要為大家詳細介紹了基于java swing實現答題系統,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java swing實現答題系統的具體代碼,供大家參考,具體內容如下

基于java swing實現答題系統

如上圖所示,代碼親測可用,如下:

  1. import java.awt.BorderLayout; 
  2. import java.awt.Color; 
  3. import java.awt.GridLayout; 
  4. import java.awt.event.ActionEvent; 
  5. import java.awt.event.ActionListener; 
  6. import java.awt.event.KeyEvent; 
  7. import java.awt.event.KeyListener; 
  8. import java.util.ArrayList; 
  9. import java.util.List; 
  10. import java.util.Random; 
  11.   
  12. import javax.swing.JButton; 
  13. import javax.swing.JFrame; 
  14. import javax.swing.JLabel; 
  15. import javax.swing.JPanel; 
  16. import javax.swing.JTextField; 
  17.   
  18. /** 
  19.  * 2017-01-09 
  20.  * @author Koow 
  21.  * 
  22.  */ 
  23. public class sa extends JFrame implements ActionListener, KeyListener { 
  24.  private JLabel title = null
  25.  private JButton submit = null
  26.  private JPanel center = null
  27.  // items用來跳轉 
  28.  private int item1 = 0; 
  29.  private int item2 = 1; 
  30.  private int item3 = 2; 
  31.  private int item4 = 3; 
  32.  private JLabel[] FormulaLabels; // 用來存放表達式的各個項 
  33.  private List<String> allResult; // 用來存放隨機出來的結果 
  34.  private JTextField[] userResults; // 用來讓用戶輸入結果 
  35.  private JLabel[] judge; // 用來顯示圖標,以顯示用戶輸入的結果是否正確 
  36.  private List<String> inputResults = null// 可以不要 
  37.  private JTextField scoreField = null
  38.  private int textCount = 1; // 用來記錄當前焦點的位置 
  39.    
  40.  public static void main(String[] args){ 
  41.   sa s=new sa(); 
  42.     
  43.  } 
  44.   
  45.  public sa() { 
  46.   // TODO Auto-generated constructor stub 
  47.   inputResults = new ArrayList<String>(); 
  48.   // 實例化 
  49.   title = new JLabel("題目很簡單,認真答哦!~(每題1分,答對加1分,答錯不扣分!)"); 
  50.   submit = new JButton("提交"); 
  51.   submit.addActionListener(this); 
  52.   GridLayout layout = new GridLayout(21, 6); 
  53.   center = new JPanel(layout); 
  54.   // 調用方法實例化方法 
  55.   initLables(); 
  56.   initUserRestult(); 
  57.   initJudge(); 
  58.   // 將各項填入到center面板(GridLayout) 
  59.   int count = 1; 
  60.   int formulaCount = 0; 
  61.   int userResultsCount = 0; 
  62.   int judgeCount = 0; 
  63.   while (count <= 120) { 
  64.    // 判斷count%6,確定要填哪個組件 
  65.    if (count % 6 == 1 || count % 6 == 2 || count % 6 == 3 || count % 6 == 4) { 
  66.     center.add(FormulaLabels[formulaCount]); 
  67.     formulaCount++; 
  68.    } else if (count % 6 == 5) { 
  69.     center.add(userResults[userResultsCount]); 
  70.     userResultsCount++; 
  71.    } else if (count % 6 == 0) { 
  72.     center.add(judge[judgeCount]); 
  73.     judgeCount++; 
  74.    } 
  75.    count++; 
  76.   } 
  77.   center.add(new JLabel()); 
  78.   center.add(new JLabel()); 
  79.   center.add(new JLabel("總分:")); 
  80.   scoreField = new JTextField(); 
  81.   scoreField.setEditable(false); 
  82.   center.add(scoreField); 
  83.   center.add(new JLabel()); 
  84.   center.add(new JLabel()); 
  85.   this.add(center, BorderLayout.CENTER); 
  86.   // 添加組件 
  87.   this.add(submit, BorderLayout.SOUTH); 
  88.   this.add(title, BorderLayout.NORTH); 
  89.   // 顯示 
  90.   this.setLocation(400, 10); 
  91.   this.setVisible(true); 
  92.   this.setSize(500, 700); 
  93.   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  94.   this.setTitle("簡單測試系統"); 
  95.   try { 
  96.    Thread.sleep(500); 
  97.   } catch (InterruptedException e) { 
  98.    // TODO Auto-generated catch block 
  99.    e.printStackTrace(); 
  100.   } 
  101.   userResults[0].requestFocus(); 
  102.  } 
  103.   
  104.  /** 
  105.   * 這個方法用來初始化算式各項的數組 
  106.   */ 
  107.  private void initLables() { 
  108.   int sum; 
  109.   int firstNumber; 
  110.   int secondNumber; 
  111.   allResult = new ArrayList<String>(); 
  112.   // 建立算式標簽 
  113.   this.FormulaLabels = new JLabel[80]; 
  114.   // 將數組中的每一個標簽都實例化 
  115.   for (int i = 0; i < 80; i++) { 
  116.    FormulaLabels[i] = new JLabel(); 
  117.   } 
  118.   // 將表達式各項賦值內容,并將隨機數的和算出結果存入Arraylist中,以便后期核對結果使用  
  119.   while (item4 < 80) { 
  120.    firstNumber = new Random().nextInt(99) + 1; 
  121.    FormulaLabels[item1].setText(String.valueOf(firstNumber)); 
  122.    FormulaLabels[item2].setText("+"); 
  123.    secondNumber = new Random().nextInt(99) + 1; 
  124.    FormulaLabels[item3].setText(String.valueOf(secondNumber)); 
  125.    FormulaLabels[item4].setText("="); 
  126.    sum = firstNumber + secondNumber; 
  127.    allResult.add(String.valueOf(sum)); 
  128.    item1 += 4; 
  129.    item2 += 4; 
  130.    item3 += 4; 
  131.    item4 += 4; 
  132.   } 
  133.   // for(int i=0;i<80;i++){ 
  134.   // System.out.println(FormulaLabels[i].getText()); 
  135.   // } 
  136.  } 
  137.   
  138.  /** 
  139.   * 這個方法用來實例化userResults數組,并實例化里面的每一個JTextField 
  140.   */ 
  141.  private void initUserRestult() { 
  142.   userResults = new JTextField[20]; 
  143.   for (int i = 0; i < 20; i++) { 
  144.    userResults[i] = new JTextField(); 
  145.    userResults[i].setSize(20, 20); 
  146.    // 后加的監聽 
  147.    userResults[i].addKeyListener(this); 
  148.   } 
  149.  } 
  150.   
  151.  /** 
  152.   * 這個方法用來實例化judge數組,并將里面的每一個Label實例化 
  153.   */ 
  154.  private void initJudge() { 
  155.   judge = new JLabel[20]; 
  156.   for (int i = 0; i < 20; i++) { 
  157.    judge[i] = new JLabel("好好算呦"); 
  158.   } 
  159.  } 
  160.   
  161.  // 實現監聽方法,當用戶點擊提交后要做的事情 
  162.  @Override 
  163.  public void actionPerformed(ActionEvent arg0) { 
  164.   // TODO Auto-generated method stub 
  165.   int score = 0; 
  166.   for (int i = 0; i < 20; i++) { 
  167.    // 將用戶輸入的結果全部獲取,存入一個ArrayList中,可以不要 
  168.    inputResults.add(userResults[i].getText().toString().trim()); 
  169.    System.out.println(userResults[i].getText().toString()); 
  170.    // 取出來用戶輸入的答案和之前算好的結果去比較,不對就把后面的標簽設置為回答錯誤, 
  171.    // 如果正確就設置為回答正確 
  172.    String result = userResults[i].getText().toString().trim(); 
  173.    if (result.equals(allResult.get(i))) { 
  174.     judge[i].setText("回答正確"); 
  175.     judge[i].setForeground(Color.RED); 
  176.     score++; 
  177.    } else { 
  178.     judge[i].setText("回答錯誤"); 
  179.     judge[i].setForeground(Color.GREEN); 
  180.    } 
  181.   } 
  182.   scoreField.setText(String.valueOf(score)); 
  183.  } 
  184.   
  185.  @Override 
  186.  public void keyPressed(KeyEvent e) { 
  187.   // TODO Auto-generated method stub 
  188.   if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
  189.    userResults[textCount].requestFocus(); 
  190.    if (textCount < 19) { 
  191.     textCount++; 
  192.    } 
  193.   } 
  194.  } 
  195.   
  196.  @Override 
  197.  public void keyTyped(KeyEvent e) { 
  198.   // TODO Auto-generated method stub 
  199.   
  200.  } 
  201.   
  202.  @Override 
  203.  public void keyReleased(KeyEvent e) { 
  204.   // TODO Auto-generated method stub 
  205.   
  206.  } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/u012934723/article/details/54294713

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91大神精品 | 亚洲国产天堂久久综合网站 | 亚洲精品午夜级久久久久 | 久草草在线视视频 | 强波多野结衣女教师 | 日韩色综合 | 国产成人亚洲精品乱码在线观看 | 亚洲 综合 欧美在线 热 | 亚洲精品国产国语 | 色综合中文字幕天天在线 | 3d蒂法精品啪啪一区二区免费 | 暖暖免费高清完整版观看日本 | 91在线 一区 二区三区 | 国产91精品区 | 2022国产麻豆剧传媒古装 | 青青在线视频免费 | 精品老司机在线视频香蕉 | 毛片免| 欧洲一级| 果冻传媒在线免费观看 | 日本剧情片在线播放中文版 | 天美传媒tm0087 | www一区二区 | 精品一区二区三区免费视频 | 极品妖艳许清赵丽全文免费阅读 | 万域之王在线观看 | 91精品国产91热久久久久福利 | 99热成人精品免费久久 | 欧美亚洲韩国 | 国内精品久久久久小说网 | 亚洲午夜精品久久久久久抢 | 日韩一级精品视频在线观看 | 天天操网| free chinese 国产精品 | 特黄特色大片免费视频播放 | 国产caonila在线观看 | 色五夜婷婷 | 日本成年片高清在线观看 | 91久久国产综合精品 | www久久精品| 无人影院在线播放视频 |