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
- i parametri per il cerchio sono filtrati con try{...}catch(...){...}
- il movimento continuo è provocato dal Timer