- 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 )