import java.applet.*;
import java.awt.*;
/*
<applet code="SlideShowApplet" width=200 height=200>
<param name=IMG1 value="image01.jpg">
<param name=IMG2 value="image02.jpg">
<param name=IMG3 value="image03.jpg">
<param name=IMG4 value="image04.jpg">
<param name=IMG5 value="image05.jpg">
<param name=WAIT value="1">
</applet>
*/
public class SlideShowApplet extends Applet implements Runnable{
int nImageCount; /* 画像の枚数 */
int nWaitSec; /* 待機時間 */
Image imgArray[]; /* 画像の配列 */
SlideShowCanvas canvas; /* キャンバス */
Thread t; /* スレッド */
public void init(){
/* パラメーター読み込み */
parseParam();
/* コンポーネントの作成と追加 */
canvas = new SlideShowCanvas();
setLayout(new GridLayout());
add(canvas);
/* スレッド開始 */
t = new Thread(this);
t.start();
}
/* パラメータータグを読み込む */
public void parseParam(){
/* 画像の枚数を取得する */
for(int i = 1 ; true ; i++ ){
if(getParameter("IMG"+i) == null){
/* 画像の枚数 */
nImageCount = i - 1;
break;
}
}
/* 画像を格納する配列を作る */
imgArray = new Image[nImageCount];
/* 画像を取得する */
for( int i = 1 ; i <= nImageCount ; i++ ){
try{
imgArray[i-1] = getImage(getDocumentBase(), getParameter("IMG"+i));
}catch(Exception e){
imgArray[i-1] = null;
}
}
/* 数字を取得する場合 */
try{
nWaitSec = Integer.parseInt( getParameter("WAIT"), 10 );
}catch(Exception e){
nWaitSec = 5;
}
}
/* スレッド */
public void run(){
int nCurrentImage = 0; /* 現在の画像 */
while(true){
canvas.paint(imgArray[nCurrentImage]);
try{
t.sleep(nWaitSec * 1000);
}catch(Exception e){ }
/* 現在の表示画像番号を増やす */
nCurrentImage++;
/* 現在の表示画像番号が最大値となったら0に戻す */
if( nCurrentImage == imgArray.length )
nCurrentImage = 0;
}
}
}
/* スライショーキャンバスクラス*/
class SlideShowCanvas extends Canvas{
Image image;
/* 指定された画像を描画します */
public void paint(Image img){
image = img;
/* 再描画依頼 */
repaint();
}
/* 画像を表示させるメソッド */
public void paint(Graphics g){
/* まだ画像が登録されていなければ帰る */
if( image == null )
return;
/* キャンバスのサイズを取得する */
Dimension d = getSize();
/* 画像をリサイズして表示 */
g.drawImage(image, 0, 0, d.width, d.height, Color.white, this);
}
public void update(Graphics g){
/* イメージ描画 */
paint(g);
}
}
|