animateimage.java

来自「Java 入门书的源码」· Java 代码 · 共 61 行

JAVA
61
字号
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Animates an image, loading it from a URL.  Uses a 
 * thread to allow the system to continue other processing.
 */

import java.awt.*;
import java.applet.Applet; 
import java.net.URL;

public class AnimateImage extends Applet implements Runnable {
  private boolean done;
  private Image pic;
  private int imageWidth, imageHeight;
  private MediaTracker tracker;
  private boolean ready = false;

  public void init() {
    pic = getImage(getDocumentBase(),"gittleman.gif");
    tracker = new MediaTracker(this);
    tracker.addImage(pic, 0);
  }    
  public void start() {
    done = false;
    Thread t = new Thread(this);
    t.start();
  }
  public void stop() {
    done = true;
  }
  public void paint(Graphics g) {
    if (ready)
      g.drawImage(pic,10,10,imageWidth,imageHeight,null);
    else
      g.drawString("Loading image",30,30);
  }
  public void run() {
    try { 
      tracker.waitForID(0); 
    }catch (InterruptedException e) {}
    imageWidth = pic.getWidth(null);
    imageHeight = pic.getHeight(null);
    ready = true;  
    int dx=20, dy=5;
    while (true) {
      for(int i=0; i<10; i++) {
        if (done) return;
        imageWidth += dx;
        imageHeight += dy;      
        repaint();
        try {
          Thread.sleep(300);
        }catch(InterruptedException e) {
           e.printStackTrace();
        }   
      }
      dx = -dx; dy = -dy; 
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?