Advertisement
Guest User

Untitled

a guest
Mar 6th, 2013
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.69 KB | None | 0 0
  1. package aurelienribon.utils.swing;
  2.  
  3. import java.lang.reflect.InvocationTargetException;
  4. import javax.swing.JPanel;
  5. import javax.swing.SwingUtilities;
  6.  
  7. public abstract class DrawingCanvas extends JPanel {
  8.         private Thread thread = null;
  9.         private boolean isRunning = false;
  10.  
  11.         public DrawingCanvas start() {
  12.                 thread = new Thread(loop);
  13.                 thread.start();
  14.                 isRunning = true;
  15.                 return this;
  16.         }
  17.  
  18.         public void stop() {
  19.                 isRunning = false;
  20.                 try {
  21.                         thread.join();
  22.                 } catch (InterruptedException ex) {
  23.                 }
  24.         }
  25.  
  26.         protected abstract void update(int elapsedMillis);
  27.  
  28.         private Runnable loop = new Runnable() {
  29.                 private long lastMillis;
  30.  
  31.                 @Override public void run() {
  32.                         lastMillis = System.currentTimeMillis();
  33.  
  34.                         while (isRunning) {
  35.                                 try {
  36.                                         final long millis = System.currentTimeMillis();
  37.                                         final long delta = millis - lastMillis;
  38.                                         lastMillis = millis;
  39.  
  40.                                         SwingUtilities.invokeAndWait(new Runnable() {@Override public void run() {update((int) delta);}});
  41.                                         Thread.sleep(16);
  42.  
  43.                                 } catch (InterruptedException ex) {
  44.                                 } catch (InvocationTargetException ex) {
  45.                                 }
  46.                         }
  47.                 }
  48.         };
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement