20-CS-694 Advanced Programming Techniques Spring 2012
Repainting

Interfaces, Exceptions, Graphics, Animation, Threads, Reflection, Networking, RMI, JDBC, JNI

     Previous      Next      Applet Source      All lectures

Repainting with Clipping

import java.awt.*;
import java.applet.*;

public class Checkers1 extends Applet implements Runnable {
   Thread runner;
   int xpos;
   int ux1, ux2;

   public void start() {
      if (runner == null) {
         runner = new Thread(this);
         runner.start();
      }
   }

   public void run() {
      setBackground(Color.blue);
      while (true) {
         for (xpos=5 ; xpos <=105; xpos+=4) {
            ux2 = xpos + 90;
            repaint();
            try { runner.sleep(50); } catch (InterruptedException e) {}
            if (ux1 == 0) ux1 = xpos;
         }
         for (xpos=105 ; xpos > 5; xpos -= 4) {
            ux1 = xpos;
            repaint();
            try { runner.sleep(50); } catch (InterruptedException e) {}
            if (ux2 == 0) ux2 = xpos + 90;
         }
      }
   }

   public void update(Graphics g) {
      g.clipRect(ux1, 5, ux2-ux1, 95);
      paint(g);
   }

   public void paint(Graphics g) {
      g.setColor(Color.black);
      g.fillRect(0,0,100,100);
      g.setColor(Color.white);
      g.fillRect(101,0,100,100);

      g.setColor(Color.red);
      g.fillOval(xpos,5,90,90);

      ux1 = ux2 = 0;
   }
}