通过本文主要向大家介绍了Java线程实现抽奖等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
抽奖界面(两个随机数和一个按钮控制抽奖开始和暂停,随机数个数自己选择性添加即可)
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+"");
}
}
}
}