- Home ›
- Applet(アプレット)入門 ›
- アプレットサンプル ›
- HERE
画像を切り替える
広告
このアプレットは、3枚の画像ファイルを用意し、4秒毎に切り替えて表示するようにしてみます。下記で実際に試して頂けます。
実際に実行すると下記のような感じになります。
runメソッド内のループ内で表示させる画像のNoを変更させています。
public void run(){
while(true){
/* 表示する画像ファイルのNoを設定 */
picNo += 1;
if (picNo >= 3){
picNo = 0;
}
}
}
paintメソッドが呼び出された時に設定されている画像ファイルのNoを参照して、表示する画像を指定しています。
public void paint(Graphics g){
/* 画像ファイルをバッファに描画 */
buffer.drawImage(img[picNo], 0, 0, this);
}
サンプル
下記が全てのソースファイルです。
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.MediaTracker;
public class Sample1 extends Applet implements Runnable{
Image img[];
MediaTracker tracker;
Thread thread = null;
int picNo;
Dimension size;
Image back;
Graphics buffer;
public void init(){
tracker = new MediaTracker(this);
/* 画像ファイルを読み込む */
img = new Image[3];
for (int i = 0 ; i < 3 ; i++){
String file = "../img/pic" + (i + 1) + ".png";
img[i] = getImage(getCodeBase(), file);
tracker.addImage(img[i], i);
}
picNo = 0;
/* ダブルバッファ用 */
size = getSize();
back = createImage(size.width, size.height);
buffer = back.getGraphics();
/* 新しいスレッドを作成し開始する */
thread = new Thread(this);
thread.start();
}
public void start(){
try {
tracker.waitForAll();
} catch (InterruptedException e) {
}
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
/* アプレットの大きさと同じ画像を表示するため下記は実際は不要 */
buffer.setColor(getBackground());
buffer.fillRect(0, 0, size.width, size.height);
/* 画像ファイルをバッファに描画 */
buffer.drawImage(img[picNo], 0, 0, this);
g.drawImage(back, 0, 0, this);
}
public void run(){
while(true){
/* 表示する画像ファイルのNoを設定 */
picNo += 1;
if (picNo >= 3){
picNo = 0;
}
repaint();
/* 4000ミリ秒待機する */
try{
Thread.sleep(4000);
}catch (InterruptedException e){
}
}
}
}
( Written by Tatsuo Ikura )
JavaDrive