用两个线程实现如下:
(如果数字滚动到 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>
*/

解决方案 »

  1.   

    你要求换为5个数字图片滚动,我现在用了5个Label标签来滚动数字,
    你需要把标签内容(现在是表示数字的字符串)换为图片就可以了,不过
    要做好显示图片和代表数字的对应关系//数字摇奖
    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>
    */
      

  2.   

    我发现刚才帖的第66-67行代码,也就是判断当前数字是否中奖的部分写的
    太麻烦了,改了一下,而且改后你只需要把要实现的数字用正确的图片
    显示就可以了,当前数值是从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>
    */
      

  3.   

    让lable显示图片我想你会,不过我还是贴出来:
      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以此类推
      

  4.   

    另外由于是用
    a2.label[0].setText(a2.guess/10000+"");//万位
    也就是 a2.guess/10000来得到万位的数字,这样在guess>99999时,万位
    变成了10,于是不能再找到对应的image10来显示图片,所以需要在此语句
    的代码段内(a2.guess++;的后面)加入判断:
    if(guess>99999)
      guess=0;
    让数字继续从0开始滚动
      

  5.   

    犯糊涂了,是
    if(a2.guess>99999)
      a2.guess=0;