A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 纵观星辰 中级黑马   /  2016-3-22 23:23  /  724 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

做了一个随机抽签的小Demo,(我们宿舍用它抽取谁打扫卫生);分享源码,JAVA基础班菜鸟一名,才刚刚入门,有不足之处请指出
  1. import java.awt.BorderLayout;
  2. import java.awt.Button;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Frame;
  6. import java.awt.Label;
  7. import java.awt.Panel;
  8. import java.awt.TextArea;
  9. import java.awt.TextField;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.WindowAdapter;
  13. import java.awt.event.WindowEvent;
  14. import java.io.BufferedWriter;
  15. import java.io.ByteArrayOutputStream;
  16. import java.io.FileInputStream;
  17. import java.io.FileNotFoundException;
  18. import java.io.FileWriter;
  19. import java.io.IOException;
  20. import java.util.Random;
  21. import java.util.Scanner;


  22. public class Test1 extends Frame {
  23.         private BufferedWriter bw;                                //带缓冲区的输出流
  24.         Panel p = new Panel();                                        //Panel组件放置添加文本框和按钮
  25.         private Button add;                                                //添加按钮
  26.         private Button start;                                        //开始按钮
  27.         private Button stop;                                        //停止按钮
  28.         private Boolean flag = false;                        //标识符
  29.         private TextField tf;                                        //添加文本框
  30.         private Label l;                                                //Label组件用来显示
  31.        
  32.         private Test1() throws IOException{
  33.                
  34.                 init();                                                                                        //初始化
  35.                 panel1();                                                                                //Panel组件放置添加文本框和按钮
  36.                 label();                                                                                //Label组件,用来显示
  37.                 listener();                                                                                //监听方法
  38.         }
  39.        

  40.         private void listener() {
  41.                 this.addWindowListener(new WindowAdapter() {        //关闭窗口

  42.                         @Override
  43.                         public void windowClosing(WindowEvent e) {
  44.                                 // TODO Auto-generated method stub
  45.                                 System.exit(0);
  46.                         }       
  47.                 });
  48.                 add.addActionListener(new ActionListener() {        //添加按钮监听
  49.                        
  50.                         @Override
  51.                         public void actionPerformed(ActionEvent e) {
  52.                                 try {
  53.                                         add();
  54.                                 } catch (IOException e1) {
  55.                                         // TODO Auto-generated catch block
  56.                                         e1.printStackTrace();
  57.                                 }
  58.                                
  59.                         }
  60.                 });
  61.                 start.addActionListener(new ActionListener() {                //开始按钮监听
  62.                        
  63.                         @Override
  64.                         public void actionPerformed(ActionEvent e) {
  65.                                 try {
  66.                                         new start().start();                                        //实例并开始线程
  67.                                         flag=true;                                                                //按下开始按钮,标识符为真
  68.                                 } catch (Exception e1) {
  69.                                         // TODO Auto-generated catch block
  70.                                         e1.printStackTrace();
  71.                                 }
  72.                                
  73.                         }
  74.                 });
  75.                 stop.addActionListener(new ActionListener() {                //结束按钮监听
  76.                        
  77.                         @Override
  78.                         public void actionPerformed(ActionEvent e) {
  79.                                 flag=false;                                                                        //标识符为假
  80.                                
  81.                         }
  82.                 });
  83.         }
  84.        
  85.         private void add() throws IOException {
  86.                 String str = tf.getText();        //获取TextField
  87.                 bw.write(str+",");
  88.                 bw.flush();
  89.        
  90.         }
  91.         private class start extends Thread{
  92.                 public void run(){
  93.                         FileInputStream fis = null;
  94.                         try {
  95.                                 fis = new FileInputStream("name.txt");        //打开输入流
  96.                         } catch (FileNotFoundException e) {
  97.                                 // TODO Auto-generated catch block
  98.                                 e.printStackTrace();
  99.                         }
  100.                         ByteArrayOutputStream baos = new ByteArrayOutputStream();        //创建一个带缓冲区的字节输出流
  101.                        
  102.                         byte[] arr = new byte[1024] ;
  103.                        
  104.                         int len;
  105.                         try {
  106.                                 while((len=fis.read(arr))!=-1){                                                        //将字节读取并存在byte数组
  107.                                         baos.write(arr);                                                                        //将字节数组中的字节存到缓冲区
  108.                                 }
  109.                         } catch (IOException e) {
  110.                                 // TODO Auto-generated catch block
  111.                                 e.printStackTrace();
  112.                         }
  113.                         String str = baos.toString();                                //将缓冲区中的字节转换成字符串,并定义一个字符串接收
  114.                         String[] name = str.split(",");                                //用","分割字符串并存在一个字符串数组里
  115.                         int index = 0;                                                                //定义一个索引
  116.                         Random r = new Random();                                        //实例随机数
  117.                         while(flag==true){                                                        //While循环当标识符为真开始循环
  118.                                 index=r.nextInt(name.length-1);                        //随机数在0~数组长度-1并赋值给索引
  119.                                 l.setText(name[index]);                                        //设置Label组件的文本
  120.                         }
  121.                 }
  122.         }
  123.         private void panel1() {
  124.                 Panel p=new Panel();
  125.                 tf = new TextField(15);        //实例一个TextField文本框
  126.                 add = new Button("添加");        //实例一个添加按钮;
  127.                 start = new Button("开始");//实例开始按钮
  128.                 stop = new Button("停止");//实例停止按钮
  129.                 p.add(tf);                                //往Panel中添加控件               
  130.                 p.add(start);                        //往Panel中添加控件
  131.                 p.add(stop);                        //往Panel中添加控件
  132.                 p.add(add);                                //往Panel中添加控件
  133.                 this.add(p,BorderLayout.SOUTH);
  134.         }
  135.         public void label() {
  136.                 l = new Label("谁是幸运星");        //Label组件
  137.                 l.setForeground(Color.RED);
  138.                 l.setBackground(Color.YELLOW);
  139.                 l.setFont(new Font("xxx", Font.PLAIN, 30));
  140.                 this.add(l);
  141.                 //p.add(view1,BorderLayout.CENTER);
  142.                 //p.add(view2,BorderLayout.SOUTH);
  143.                 //this.add(p);
  144.                
  145.         }
  146.         public void init() throws IOException {//初始化
  147.                 this.setVisible(true);
  148.                 this.setSize(500, 600);
  149.                 this.setLocation(500, 100);
  150.                 bw = new BufferedWriter(new FileWriter("name.txt",true));        //打开输出流
  151.         }
  152.         public static void main(String[] args) throws IOException {
  153.                 new Test1();
  154.         }
  155.        
  156. }
复制代码


3 个回复

正序浏览
有点乱哈哈...
回复 使用道具 举报
Swing写的
回复 使用道具 举报
好长的代码啊 , 还没写过这么多呢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马