点兵点将,抽奖小程序,多线程显示时间

点兵点将,抽奖小程序,多线程显示时间,第1张

点兵点将,抽奖小程序,多线程显示时间
package pointSoldierPoint;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.TreeSet;

import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Jtextarea;
import javax.xml.crypto.Data;


public class Soldier extends Jframe implements Runnable{

	
	private JPanel panel;
	private JButton button;
	private JLabel label;
	private Jtextarea text;
	
	
	private static Map map=null;
	
	
	static {
		map=new HashMap();
		String name=null;
		int id=1;	
		
		//从外部获取文件
		File file=new File("students.txt");
		try(BufferedReader bf=new BufferedReader(new FileReader(file));){
			while((name=bf.readLine())!=null) {
				map.put(id, name);
				id++;
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//通过构造方法调用其他方法,并设置相关属性
	public Soldier() {
		init();
		buttonAt();
		this.setSize(600, 500);//窗体大小
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭
		this.setTitle("抽奖");//标题
		this.setVisible(true);//设置显示
	}
	
	public void init() {
		
		panel=new JPanel(new GridLayout(3, 1));//网格布局
		button=new JButton("点我");
		label=new JLabel("中奖名单");
		text=new Jtextarea(3,30);
		
		panel.add(button);
		panel.add(label);
		panel.add(text);
		
		this.getContentPane().add(panel);
		
	}
	
	
	public void buttonAt() {
		button.addActionListener((e)->{
			
			TreeSet set=new TreeSet<>();//排序不重复
			while(set.size()<5) {
				Random random=new Random();
				int num=random.nextInt(29)+1;
				set.add(num);
			}
			StringBuffer sb =new StringBuffer();//存放中奖者姓名
			
			for(Integer s:set) {
				String name=map.get(s);
				sb.append(name+",");
			}
			text.setText(sb.substring(0, sb.toString().length()-1));
		});
	}
	public static void main(String[] args) {
		System.out.println(map.size());
		Soldier s1=new Soldier();//构造方法
		new Thread(s1).start();//启动时间线程
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		//设置时间
		while(true) {
			Date date=new Date();
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String time =sdf.format(date);
			label.setText("中奖名单(当前时间"+time+")");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存