黑马程序员技术交流社区
标题:
随机抽签的小Demo
[打印本页]
作者:
纵观星辰
时间:
2016-3-22 23:23
标题:
随机抽签的小Demo
做了一个随机抽签的小Demo,(我们宿舍用它抽取谁打扫卫生
);
分享源码,JAVA基础班菜鸟一名,才刚刚入门,有不足之处请指出
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
public class Test1 extends Frame {
private BufferedWriter bw; //带缓冲区的输出流
Panel p = new Panel(); //Panel组件放置添加文本框和按钮
private Button add; //添加按钮
private Button start; //开始按钮
private Button stop; //停止按钮
private Boolean flag = false; //标识符
private TextField tf; //添加文本框
private Label l; //Label组件用来显示
private Test1() throws IOException{
init(); //初始化
panel1(); //Panel组件放置添加文本框和按钮
label(); //Label组件,用来显示
listener(); //监听方法
}
private void listener() {
this.addWindowListener(new WindowAdapter() { //关闭窗口
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
add.addActionListener(new ActionListener() { //添加按钮监听
@Override
public void actionPerformed(ActionEvent e) {
try {
add();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
start.addActionListener(new ActionListener() { //开始按钮监听
@Override
public void actionPerformed(ActionEvent e) {
try {
new start().start(); //实例并开始线程
flag=true; //按下开始按钮,标识符为真
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
stop.addActionListener(new ActionListener() { //结束按钮监听
@Override
public void actionPerformed(ActionEvent e) {
flag=false; //标识符为假
}
});
}
private void add() throws IOException {
String str = tf.getText(); //获取TextField
bw.write(str+",");
bw.flush();
}
private class start extends Thread{
public void run(){
FileInputStream fis = null;
try {
fis = new FileInputStream("name.txt"); //打开输入流
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //创建一个带缓冲区的字节输出流
byte[] arr = new byte[1024] ;
int len;
try {
while((len=fis.read(arr))!=-1){ //将字节读取并存在byte数组
baos.write(arr); //将字节数组中的字节存到缓冲区
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String str = baos.toString(); //将缓冲区中的字节转换成字符串,并定义一个字符串接收
String[] name = str.split(","); //用","分割字符串并存在一个字符串数组里
int index = 0; //定义一个索引
Random r = new Random(); //实例随机数
while(flag==true){ //While循环当标识符为真开始循环
index=r.nextInt(name.length-1); //随机数在0~数组长度-1并赋值给索引
l.setText(name[index]); //设置Label组件的文本
}
}
}
private void panel1() {
Panel p=new Panel();
tf = new TextField(15); //实例一个TextField文本框
add = new Button("添加"); //实例一个添加按钮;
start = new Button("开始");//实例开始按钮
stop = new Button("停止");//实例停止按钮
p.add(tf); //往Panel中添加控件
p.add(start); //往Panel中添加控件
p.add(stop); //往Panel中添加控件
p.add(add); //往Panel中添加控件
this.add(p,BorderLayout.SOUTH);
}
public void label() {
l = new Label("谁是幸运星"); //Label组件
l.setForeground(Color.RED);
l.setBackground(Color.YELLOW);
l.setFont(new Font("xxx", Font.PLAIN, 30));
this.add(l);
//p.add(view1,BorderLayout.CENTER);
//p.add(view2,BorderLayout.SOUTH);
//this.add(p);
}
public void init() throws IOException {//初始化
this.setVisible(true);
this.setSize(500, 600);
this.setLocation(500, 100);
bw = new BufferedWriter(new FileWriter("name.txt",true)); //打开输出流
}
public static void main(String[] args) throws IOException {
new Test1();
}
}
复制代码
作者:
大叔的青葱
时间:
2016-3-22 23:25
好长的代码啊 , 还没写过这么多呢。
作者:
as9600
时间:
2016-3-22 23:28
Swing写的
作者:
纵观星辰
时间:
2016-3-22 23:36
有点乱哈哈...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2