Java线程实现抽奖

抽奖界面(两个随机数和一个按钮控制抽奖开始和暂停,随机数个数自己选择性添加即可)

import javax.swing.JButton;
import javax.swing.JLabel;

public class Luckydraw {
	public static void main(String[] args){
		Luckydraw ld=new Luckydraw();
		ld.show();
	}
	public void show(){
		javax.swing.JFrame jf = new javax.swing.JFrame();
		jf.setTitle("抽奖");
		jf.setSize(600, 600);
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);
		java.awt.FlowLayout flow = new java.awt.FlowLayout();
		jf.setLayout(flow); 
		//界面基础设置
		JLabel jl1=new JLabel("中奖号码:");
		jf.add(jl1);
		JLabel jl2=new JLabel("0");
		jf.add(jl2);
		JLabel jl3=new JLabel("0");
		jf.add(jl3);
		//添加抽奖位数(2位)和页面提示字“中奖号码”
		JButton jbu1=new JButton("开始抽奖");
		jf.add(jbu1);
		
		jf.setVisible(true);
		Drawlistener dl=new Drawlistener(jl2,jl3);
		//添加监听器
		jbu1.addActionListener(dl);
	}

}

监听器

import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;

public class Drawlistener implements ActionListener{
	private JLabel jl2,jl3;
	private Drawthread dt;

    //构造方法传参,启动抽奖线程
	public Drawlistener(JLabel jl2,JLabel jl3){
	    this.jl2=jl2;
	    this.jl3=jl3;
	    dt=new  Drawthread(jl2,jl3);
        dt.start();
    }
	//按钮点击来控制线程暂停与否(bl=true则继续随机数,bl=false则暂停跳动,显示一个值)
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("开始抽奖")){
			JButton jbu=(JButton)e.getSource();
			jbu.setText("结束抽奖");
			dt.bl=true;
		}
		else{
			JButton jbu=(JButton)e.getSource();
			jbu.setText("开始抽奖");
			dt.bl=false;
		}	
		
	}
}

抽奖线程

import java.util.Random;
import javax.swing.JLabel;

public class Drawthread extends Thread{
	private JLabel jl2,jl3;
	private Random rd=new Random();
	public volatile Boolean bl=false;
	
	public Drawthread(JLabel jl2,JLabel jl3){
		this.jl2=jl2;
		this.jl3=jl3;
	}
	public void run(){
		while(true){
			//线程一直在循环中
			if(bl==true){
				//bl=false时不执行以下代码(即文本框内容不被改变,显示一个值)
		        int x2=rd.nextInt(10);
		        jl2.setText(x2+"");
		        int x3=rd.nextInt(10);
		        jl3.setText(x3+"");	
			}			 
		}
	}   
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值