Cerchi in movimento #1

Raggio=45, Velocità=10 px/s

Raggio=30, Velocità=100 px/s

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

public class MuoviCerchio extends Applet implements ActionListener
{
   final int xMin=0;
   int       xMax,         // limiti sinistro e destro
             xC,           // coordinate dell'angolo in alto
             yC;           // del cerchio
   int       raggio,
             diametro;
   int       ms;           // ogni quanti millisecondi si muove
   Timer     t;            // per regolare l'animazione
   boolean   versoDestra;  // da che parte va

   public void init()
   {
      try { raggio=Integer.parseInt(getParameter("Raggio")); }
      catch(Exception e) { raggio=25; }
      try { ms=Integer.parseInt(getParameter("Velocita")); }
      catch(Exception e) { ms=10; }

      diametro=2*raggio;

      xC = 0;               // parte da destra
      versoDestra = true;   // verso destra

      t=new Timer(ms, this);
      t.start();

      setBackground(Color.black);
      setForeground(Color.gray);
   }

   public void paint(Graphics g)
   {
      g.drawOval(xC, yC, diametro, diametro);
   }

   public void actionPerformed(ActionEvent e)
   {
      Dimension d = getSize();

      xMax=d.width-diametro;
      yC  =d.height/2-raggio;

      if(versoDestra)
      {
         if (xC > xMax)
         {
            versoDestra=false;
            xC=xMax;
         }
         else
            xC++;
      }
      else
      {
         if (xC <= xMin)
         {
            versoDestra=true;
            xC=xMin;
         }
         else
            xC--;
      }
      repaint();
   }

}//class

Note

  1. i parametri per il cerchio sono filtrati con try{...}catch(...){...}
  2. il movimento continuo è provocato dal Timer