Un banale esempio funzionante:
	codice:
	import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MioRettangolo extends JFrame implements ActionListener {
   private class MioPannello extends JPanel {
      private int x;
      private int y;
      @Override
      public void paintComponent(Graphics g) {
         g.setColor( Color.BLUE );
         g.fillRect(x, y, 50, 50);
      }
      public void sposta() {
         if (x > 550) {
            x = -1;
            y = -1;
         }
         x++;
         y++;
      }
   }
   private MioPannello pannello;
   private Timer timer;
   public MioRettangolo() {
      Container c = getContentPane();
      c.setLayout( new BorderLayout() );
      pannello = new MioPannello();
      c.add(pannello, BorderLayout.CENTER);
      setTitle("Pannello spostante");
      setSize(800, 600);
      setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
      addWindowListener( new WindowAdapter() {
         @Override
         public void windowClosing(WindowEvent we) {
            chiudiApplicazione();
         }
      });
      setLocationRelativeTo( null );
      setVisible( true );
      timer = new Timer(200, this);
      timer.start();
   }
   private void chiudiApplicazione() {
      timer.stop();
      dispose();
   }
   @Override
   public void actionPerformed(ActionEvent ae) {
      pannello.sposta();
      repaint();
   }
   public static void main(String[] args) {
      MioRettangolo mr = new MioRettangolo();
   }
}
 
Ciao.