-
画像:Image
jpg ファイルを表示するにはImageクラスを利用します。
Image Images[]=new Image[4];
で4枚の画像を作成します。画像を読み込むのはgetimageメソッドです。gifファイルも読み込むことができます。
Images[0] = getImage(getCodeBase(), "shoubu1.jpg");
画像の表示は
g.drawImage(Images[0], 10, 10, this);
で行います。
-
メディアトラッカー:MediaTracker
getImage()は画像の読み込み完了を確認しません。大きなファイルを読む場合(時間がかかりますから)、画像の読み込みを確認する必要があります。これを行うのが、MediaTrackerクラスです。まず、
MediaTracker mt=new MediaTracker(this);
で、画像受信を追跡する MediaTrackerクラスのオブジェクト mt を作成します。画像を読み込むとき
mt.addImage(Images[1],1);
で、1番目のファイルを待機リストに加えます。読み込み確認は mt.checkID(index,true) で行います。読み込みが完了しているとtrueが返ります。
-
リスト:List
リストは一覧を表示し、ダブルクリックすると選択が可能なGUI部品です。ここでは、リストで各画像の遅延時間を設定します。リストは次のように作成します。
List list1 = new List();
list1.setBounds(new Rectangle(151, 34, 75, 78));//リスト
list1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
list1_actionPerformed(e);
}
});
リストへの要素の追加は以下のようにします。ここでは、4枚の画像の表示時間(m秒単位)を設定します。
list1.add("200");
list1.add("200");
list1.add("200");
list1.add("200");
で行います。
リストイベント処理で4枚の画像の表示時間間隔を編集します。リストボックスの項目をダブルクリックすると、イベントが発生します。このイベント処理(list1_actionPerformed(e);)で、
selected=list1.getSelectedItem();
selIndex=list1.getSelectedIndex();
textField1.setText(selected);
により、その項目の文字と番号を取得し、textField1 に設定します。
数値を変更し変更ボタンを押すと、ボタン処理で、下記のように、リスト要素の値を変更します。
list1.replaceItem(st,selIndex);
Delay[selIndex]=Integer.parseInt(st);
-
スレッド:Thread
スレッドは同じプログラム内部で独立に実行されるプロセスです。一般のプロセスと比較し、メモリ等の保護機能が不要なためシステムから見ると軽いプロセスとなり、切り替えも早くなります。アップレット内部でスレッドを組み込む場合、extendは利用できないため(Javaでは
extend 出来るクラスは1つのみ)、次のように、Runnableインターフェースを利用します。
public class jpegAnim extends Applet implements Runnable{ }
スレッドは、通常 start() メソッドで起動します。これは、ページが表示される時呼び出されるメソッドです。
public void start()
{
thread1 = new Thread(this);
thread1.start();
}
スレッドの本体は、次の run() メソッドで、アプレットとは独立して実行されます。ここでは、画像を表示後、sleep()で指定された時間:Delay[index] だけ休止します。休止から覚めると、indexを更新し、animateFlagがtrueの間、繰り返します。
public void run()//スレッド実行部
{
while(animateFlag){
repaint();
try {
Thread.sleep(Delay[index]);//遅延時間休止
}
catch(InterruptedException e) { }
index++;
if(index > 3) index = 0;
}
}
スレッドにしないで、sleep() を実行すると、アップレットは休止状態にはいるため、GUI部品の実行(マウス選択など)ができなくなってしまいます。スレッドは、stop()メソッドで終了させます。stop()メソッドはページの表示が終了すると、呼び出されるメソッドです。
public void stop()
{
animateFlag = false;
}