import java.awt.*;
import java.awt.event.*; 
import javax.swing.*;
class Fin extends JFrame 
{	class Pan extends JPanel 
	{	private double angolo = 0, delta = 0.05, dx, dy;
		void ruota()
		{	angolo +=delta;
			dx = 50*Math.cos(angolo); 
			dy = 50*Math.sin(angolo);
		}
		public void paintComponent(Graphics g)
		{	super.paintComponent(g); 
			setBackground(Color.green); 
			g.setColor(Color.yellow);
			g.fillOval(50, 50, 100, 100);
			g.setColor(Color.red); 
			g.drawLine(100,100,(int)(100+dx),(int)(100+dy));
		}
	}
	private Pan p;
	public class AscoltatoreT implements ActionListener 
	{	public void actionPerformed(ActionEvent e) 
		{	p.ruota(); p.repaint();	} 
	}
	private int WAIT = 30; private AscoltatoreT gg;
	private Timer t;
	Fin() 
	{	setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
		p = new Pan(); getContentPane().add(p);
		gg = new AscoltatoreT(); t = new Timer(WAIT, gg);
	}
	void partenza()
	{	t.start();	} 
	void arresto()
	{	t.stop();	}
}

public class ProvaRotazione
{	public static void main(String[] args) 
	{	Fin ff = new Fin();
		ff.setSize(200, 220);ff.setVisible(true); 
		ff.partenza(); 
		try { Thread.sleep(10000); }
		catch (InterruptedException e) { } 
		ff.arresto();
	}
}
