1. 程式人生 > 程式設計 >java編寫一個花名隨機抽取器的實現示例

java編寫一個花名隨機抽取器的實現示例

一.程式效果

java編寫一個花名隨機抽取器的實現示例

還記得以前上課的時候,老師會用自己寫的一個抽取器抽取同學回答問題,當時想著我也要做一個,假期沒事幹,自學了java,閒來無聊,我也寫一個,但是寫的沒有老師好,哈哈,好了說一下思路,先把介面佈置好,然後逐一實現每個按鈕的功能,其實也沒什麼難的。

二.需要用到的包

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

三.程式碼

1.相關例項物件,所以物件均為全域性物件

 private static JLabel jl= new JLabel("檔案:");
 private static JTextField jt =new JTextField();
 private static JButton OpenButton =new JButton("選擇檔案");
 private static JTextField jt2 =new JTextField();//文字框 顯示抽取名單
 private static JButton StartButton =new JButton("開始抽取");
 private static JLabel ClassjL= new JLabel("班級:");
 private static JTextField ClassjT =new JTextField();//顯示班級
 private static JLabel NumjL= new JLabel("人數:");
 private static JTextField NumjT =new JTextField();//顯示人數
 private static JLabel jl2= new JLabel("抽取模式:");
 private static JComboBox jc= new JComboBox();//下拉列表框
 private static JButton AboutButton =new JButton("關於");
 private static JOptionPane jo =new JOptionPane();//彈出一個提示框
 private static String[]s ;//用來存放人名
 private static Font font = new Font("宋體",Font.BOLD,18); //設定字型物件
 private static int Number=0;//用來存放抽取人數

2.建立窗體,並完成元件的初始化

 private void windows() {
   JFrame jf =new JFrame ("花狗抽取器 本人部落格:fdogcsdn.com");
   jf.setIconImage(new ImageIcon("Icon.jpg").getImage());
   Container c=jf.getContentPane();
   c.setLayout(new GridLayout(4,2,10,10)); 
   OpenButton.setFocusPainted(false);
   StartButton.setFocusPainted(false);
   AboutButton.setFocusPainted(false);//去掉按鈕文字旁邊的虛線框
   JPanel jp1 =new JPanel();
   JPanel jp2 =new JPanel(new BorderLayout());
   JPanel jp3 =new JPanel();
   JPanel jp4 =new JPanel();//新增面板
   jt.setColumns(10);
   ClassjT.setColumns(6);
   NumjT.setColumns(4);
   jt2.setHorizontalAlignment(JTextField.CENTER);
   jc.addItem("--請選擇--");
   jc.addItem("抽取一人");
   jc.addItem("抽取三人");
   jc.addItem("抽取五人");
   jp1.add(jl);
   jp1.add(jt);
   jp1.add(OpenButton);
   jp2.add(jt2,BorderLayout.CENTER);
   jp3.add(ClassjL);
   jp3.add(ClassjT);
   jp3.add(NumjL);
   jp3.add(NumjT);
   jp3.add(jl2);
   jp3.add(jc); 
   jp4.add(StartButton);
   jp4.add(AboutButton);
   c.add(jp1);
   c.add(jp2);
   c.add(jp3);
   c.add(jp4);
   jf.setVisible(true);
   jf.setBounds(800,200,400,500);
   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   getOpenButton(); //下面三個方法是用來監聽按鈕事件方法
   getAboutButton();
   getSrartButton();
  }

3.新增“開啟檔案”按鈕監聽事件:

  private void getOpenButton() {
   OpenButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
     JFileChooser fc =new JFileChooser();//這個物件就是我們點選開啟檔案,出來的檔案選擇器
     fc.setCurrentDirectory(new File("."));//指定當前預設目錄
     fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//可以選擇只打開檔案或者資料夾
     fc.setMultiSelectionEnabled(false);//是否允許多選檔案
     int i =fc.showOpenDialog(getContentPane());
     if(i==JFileChooser.APPROVE_OPTION) {//判斷是否開啟
      File file =fc.getSelectedFile();
      //顯示選中內容
      jt.setText(fc.getSelectedFile().getName());
      try{
      FileReader fr =new FileReader(file);
      BufferedReader in =new BufferedReader (fr);
      String line= in.readLine();//讀取txt檔案中的內容
      s =line.split(" ");//以空格為分隔符,儲存人名
      NewMessage();  //監聽事件
      getjcomboBox();//監聽事件
      }catch(Exception e1) {
      e1.printStackTrace();
      }    
     }
   }
   });
  }

4.“關於”按鈕監聽事件

  private void getAboutButton() {
   AboutButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    jo.showMessageDialog(null,"可建立txt檔案:\n寫入班級名字然後空格學生名字\n名字和名字之間必須要用空格隔開\n即可識別班級名稱和人數以及名單");
   }
   });
  }

5.下拉列表框選擇監聽事件

 private void getjcomboBox() {
   jc.addItemListener(new ItemListener() {
   public void itemStateChanged(ItemEvent e) {
    if(e.getStateChange() == ItemEvent.SELECTED) {
    String itemSize = (String) e.getItem(); 
    if(itemSize=="抽取一人") {
     Number =1;
    }
    if(itemSize=="抽取三人") {
     Number =3;
    }
    if(itemSize=="抽取五人") {
     Number =5;
    }
    }
   }
   });
  }

6.“開始抽取”按鈕監聽事件

 private void getSrartButton() {
   StartButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    switch(Number) {
    case 1:
    int num1 =(int)1+(int)(Math.random()*(s.length-1-1));
    jt2.setText(s[num1]);
    break;
    case 3:
    int []num3=new int[100];
    for(int i=0;i<100;i++) {
     num3[i]=(int)1+(int)(Math.random()*(s.length-1-1));
    }
    for(int i=0;i<98;i++) {
     if(num3[i]!=num3[i+1] && num3[i]!=num3[i+2] && num3[i+1]!=num3[i+2]) {
       String strtext1= s[num3[i]]+" "+s[num3[i+1]]+" "+s[num3[i+2]];
       jt2.setText(strtext1);
     break;
     }
    }
    break;
    case 5:
    int []num5=new int[100];
    for(int i=0;i<100;i++) {
     num5[i]=(int)1+(int)(Math.random()*(s.length-1-1));
    }
    for(int i=0;i<95;i++) {
     if(num5[i]!=num5[i+1] && num5[i]!=num5[i+2] && num5[i]!=num5[i+3] && num5[i]!=num5[i+4]
     && num5[i+1]!=num5[i+2] && num5[i+1]!=num5[i+3] && num5[i+1]!=num5[i+4]
     &&num5[i+2]!=num5[i+3] && num5[i+2]!=num5[i+4]
     &&num5[i+3]!=num5[i+4]) {
       String strtext1= s[num5[i]]+" "+s[num5[i+1]]+" "+s[num5[i+2]]+" "+s[num5[i+3]]+" "+s[num5[i+4]];
       jt2.setText(strtext1);
     break;
     }
    }
    break;
    }
   }
   });
  }

7.如果成功開啟檔案並讀取,文字框顯示內容

 private void NewMessage() {
   ClassjT.setText(s[0]);
   String s1="";
   s1=""+(s.length-1);
   NumjT.setText(s1);
   jt2.setFont(font);
   jt2.setForeground(Color.blue);
   jt2.setText("已就緒,請開始抽取。");
  }

8.主方法

 public static void main(String[] args) {
 callmy call = new callmy();
 call.windows();
 }

9.資源下載

相關原始碼

到此這篇關於java編寫一個花名隨機抽取器的實現示例的文章就介紹到這了,更多相關java 花名隨機抽取器內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!