by Dinesh Thakur

 

import java.awt.*;

import java.awt.event.*;
import java.applet.*;
/*<applet code="MovingBalls" width=500 height=250> </applet>*/
public class MovingBalls extends Applet implements ActionListener,Runnable
{
        int d=100;
        Thread t;
        Button btnStart,btnStop,btnPause,btnResume;
        int i,m,j;
        TextField txtSpeed;
        Label lblSpeed;
        public void init()
           {
               lblSpeed=new Label("Enter speed in ms");
               txtSpeed=new TextField(5);
               btnStart=new Button("Start");
               btnStop=new Button("Stop");
               btnPause=new Button("Pause");
               btnResume=new Button("Resume");
               btnStart.addActionListener(this);
               btnStop.addActionListener(this);
               btnPause.addActionListener(this);
               btnResume.addActionListener(this);
               add(lblSpeed);
               add(txtSpeed);
               add(btnStart);
               add(btnStop);
               add(btnPause);
               add(btnResume);
           }
              public void actionPerformed(ActionEvent ae)
                {
                     if((ae.getSource()==btnStart)&&(t==null))
                      {
                           t = new Thread(this);
                           t.start();
                       }
                      else if((ae.getSource()==btnStop)&&(t != null))
                       {
                           t.stop();
                           t=null;
                       }
                     else if((ae.getSource()==btnPause)&&(t != null))
                       {
                          t.suspend();
                       }
                    else if((ae.getSource()==btnResume)&&(t != null))
                       {
                            t.resume();
                        }
                 }
                     public void run()
                       {
                           m=((int)(Math.random()*1000))%700;
                           for(j=500;;j--)
                               {
                                  if(j<-1000)
                                    {
                                       m=((int)(Math.random()*1000))%700;
                                        j=500;
                                    }
                                  repaint();
                                  try
                                    {
                                        Thread.sleep(Integer.parseInt(txtSpeed.getText()));
                                    }
                                        catch(Exception e){}
                                }
                         }
             public void paint(Graphics g)
          {
                for(int k=0,i=d;i>0;i--,k++)
                      {
                           g.setColor(new Color(100+k,100,100+k));
                           g.drawOval((m+200)%700+k/2,k/2+j,i,i);
                       }
                          for(int k=0,i=d;i>0;i--,k++)
                             {
                                   g.setColor(new Color(100+k,200,80+k));
                                   g.drawOval(k/2+(m%700),k/2+j,i,i);
                              }
                         for(int k=0,i=d;i>0;i--,k++)
                            {
                                   g.setColor(new Color(10+k,40,90+k));
                                   g.drawOval(k/2+(m+500)%700,k/2+j,i,i);
                            }
             }
}

Moving Ball Using Thread in Java Example