用两个线程实现如下:
(如果数字滚动到 88 时按下停止按钮则中奖)
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class Award extends Applet {
Button start;
Button stop;
TextField text;
String award;
String show;
long guess;
boolean flag;
SubTask st=null;
public void init() {
start=new Button("开始");
stop=new Button("停止");
text=new TextField(20);
award="88"; //中奖数字
guess=0;
flag=false;
show="碰碰运气!";
start.setEnabled(true);
stop.setEnabled(false);
start.addActionListener(action);
stop.addActionListener(action);
this.add(start);
this.add(stop);
this.add(text);
} public void paint(Graphics g) {
g.drawString(show, 150, 60 );
}
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == start)
{
show="碰碰运气!";
repaint();
start.setEnabled(false);
stop.setEnabled(true);
flag=true;
if(st==null)
st = new SubTask(Award.this);
}
else
{
flag=false;
if(text.getText().equals(award))
show="恭喜!您中奖了";
else
show="谢谢参与,您再试试";
stop.setEnabled(false);
start.setEnabled(true);
guess=0;
repaint();
}
}
};
}class SubTask extends Thread {
Award a2;
public SubTask(Award a2) {
this.a2 = a2;
start();
}
public void run() {
for(;;){
try {
sleep(100); //可以调整滚动速度
} catch (InterruptedException e){}
if(a2.flag==true)
a2.text.setText(++a2.guess+"");
}
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Award.class"
width = "500"
height = "100"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
(如果数字滚动到 88 时按下停止按钮则中奖)
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class Award extends Applet {
Button start;
Button stop;
TextField text;
String award;
String show;
long guess;
boolean flag;
SubTask st=null;
public void init() {
start=new Button("开始");
stop=new Button("停止");
text=new TextField(20);
award="88"; //中奖数字
guess=0;
flag=false;
show="碰碰运气!";
start.setEnabled(true);
stop.setEnabled(false);
start.addActionListener(action);
stop.addActionListener(action);
this.add(start);
this.add(stop);
this.add(text);
} public void paint(Graphics g) {
g.drawString(show, 150, 60 );
}
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == start)
{
show="碰碰运气!";
repaint();
start.setEnabled(false);
stop.setEnabled(true);
flag=true;
if(st==null)
st = new SubTask(Award.this);
}
else
{
flag=false;
if(text.getText().equals(award))
show="恭喜!您中奖了";
else
show="谢谢参与,您再试试";
stop.setEnabled(false);
start.setEnabled(true);
guess=0;
repaint();
}
}
};
}class SubTask extends Thread {
Award a2;
public SubTask(Award a2) {
this.a2 = a2;
start();
}
public void run() {
for(;;){
try {
sleep(100); //可以调整滚动速度
} catch (InterruptedException e){}
if(a2.flag==true)
a2.text.setText(++a2.guess+"");
}
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Award.class"
width = "500"
height = "100"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
你需要把标签内容(现在是表示数字的字符串)换为图片就可以了,不过
要做好显示图片和代表数字的对应关系//数字摇奖
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class Award extends Applet {
Button start;
Button stop;
Label[] label;
String award;
String result;
String show;
long guess;
boolean flag;
SubTask st=null;
public void init() {
start=new Button("开始");
stop=new Button("停止");
label=new Label[5];
for(int i=0;i<5;i++)
label[i]=new Label("0");
award="00088"; //中奖数字
result="";
guess=0;
flag=false;
show="碰碰运气!";
start.setEnabled(true);
stop.setEnabled(false);
start.addActionListener(action);
stop.addActionListener(action);
this.add(start);
this.add(stop);
for(int i=0;i<5;i++)
this.add(label[i]);
} public void paint(Graphics g) {
g.drawString(show, 150, 60 );
}
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == start)
{
show="碰碰运气!";
repaint();
start.setEnabled(false);
stop.setEnabled(true);
flag=true;
if(st==null)
st = new SubTask(Award.this);
}
else
{
flag=false;
for(int i=0;i<5;i++)
result=result+label[i].getText()+"";
if(result.equals(award))
show="恭喜!您中奖了";
else
show="谢谢参与,您再试试";
result="";
stop.setEnabled(false);
start.setEnabled(true);
guess=0;
repaint();
}
}
};
}class SubTask extends Thread {
Award a2;
public SubTask(Award a2) {
this.a2 = a2;
start();
}
public void run() {
for(;;){
try {
sleep(100); //可以调整滚动速度
} catch (InterruptedException e){}
if(a2.flag==true)
{
a2.guess++;
a2.label[4].setText(a2.guess%10+""); //个位
a2.label[3].setText((a2.guess%100)/10+"");//十位
a2.label[2].setText((a2.guess%1000)/100+"");//百位
a2.label[1].setText((a2.guess%10000)/1000+"");//千位
a2.label[0].setText(a2.guess/10000+"");//万位
}
}
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Award.class"
width = "500"
height = "100"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
太麻烦了,改了一下,而且改后你只需要把要实现的数字用正确的图片
显示就可以了,当前数值是从guess里取,和图片无关了,需要你换图片的
地方我都做了注释//数字摇奖,图片滚动
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class Award extends Applet {
Button start;
Button stop;
Label[] label;
String award;
String result;
String show;
long guess;
boolean flag;
SubTask st=null;
public void init() {
start=new Button("开始");
stop=new Button("停止");
label=new Label[5];
for(int i=0;i<5;i++)
label[i]=new Label("0");// 换为显示‘0’的图片
award="00088"; //中奖数字
result="";
guess=0;
flag=false;
show="碰碰运气!";
start.setEnabled(true);
stop.setEnabled(false);
start.addActionListener(action);
stop.addActionListener(action);
this.add(start);
this.add(stop);
for(int i=0;i<5;i++)
this.add(label[i]);
} public void paint(Graphics g) {
g.drawString(show, 150, 60 );
}
ActionListener action = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == start)
{
show="碰碰运气!";
repaint();
start.setEnabled(false);
stop.setEnabled(true);
flag=true;
if(st==null)
st = new SubTask(Award.this);
}
else
{
flag=false;
//刚才改动的地方
result=String.valueOf(guess);
if(result.equals(award))
show="恭喜!您中奖了";
else
show="谢谢参与,您再试试";
result="";
stop.setEnabled(false);
start.setEnabled(true);
guess=0;
repaint();
}
}
};
}class SubTask extends Thread {
Award a2;
public SubTask(Award a2) {
this.a2 = a2;
start();
}
public void run() {
for(;;){
try {
sleep(100); //可以调整滚动速度
} catch (InterruptedException e){}
if(a2.flag==true)
{
a2.guess++;
//下面5句均替换为显示不同数字的图片,注意数字与图片的对应
a2.label[4].setText(a2.guess%10+""); //个位
a2.label[3].setText((a2.guess%100)/10+"");//十位
a2.label[2].setText((a2.guess%1000)/100+"");//百位
a2.label[1].setText((a2.guess%10000)/1000+"");//千位
a2.label[0].setText(a2.guess/10000+"");//万位
}
}
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Award.class"
width = "500"
height = "100"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
ImageIcon image0=new ImageIcon("number0.jpg");
Label label=new Label(image0);
如果要让此标签显示不同图片:
lable.setIcon(image2);
当然了,你需要做10个 ImageIcon对象给标签用,可以做成数组假如你准备好了 number0.jpg,number1.jpg,...等10个jpg图片来显示数字,
并且建立了image0,image1...image9等10个ImageIcon对象
那么从要显示数字到图片的对应可以这样做:
先在类SubTask里加上
String imageName; 需要替换的部分原来是:
a2.label[4].setText(a2.guess%10+"");
改为:
imageName="image"+a2.guess%10;
a2.label[4].setIcon(imageName);
就可以显示对应数字的图片
其他几个label以此类推
a2.label[0].setText(a2.guess/10000+"");//万位
也就是 a2.guess/10000来得到万位的数字,这样在guess>99999时,万位
变成了10,于是不能再找到对应的image10来显示图片,所以需要在此语句
的代码段内(a2.guess++;的后面)加入判断:
if(guess>99999)
guess=0;
让数字继续从0开始滚动
if(a2.guess>99999)
a2.guess=0;