/**
* アプレット習作:海の幸のスライドショー(MiniSlide01.java)の改良版
* 2000年1月24日(月)
* GUI部品:キャンバス、チョイスボタン、ボタン、
* レイアウト:BorderLayout
**/
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class MiniSlide03 extends Applet
implements ItemListener, ActionListener{
/**
* 画像を表示するキャンバスを定義するクラス
**/
class MyCanvas extends Canvas{
Image img1[], img2[]; // キャンバスに表示する画像を保存する配列
int state; //キャンバスの状態
int picNum; // 表示する画像の番号
// initメソッド:キャンバスを初期化する
public void init(){
//背景色を指定する
setBackground(Color.white);
//キャンバスの初期状態を設定する
state = 1; //最初は状態1
// 画像の番号を0(初期値)に設定
picNum = 0;
//画像を読み込む
img1 = new Image[3];
int i;
for(i=0; i<3; i++){
img1[i] = getImage(getDocumentBase(), "umi1" + i + ".gif");
}
img2 = new Image[3];
for(i=0; i<3; i++){
img2[i] = getImage(getDocumentBase(), "umi2" + i + ".gif");
}
}
// setStateメソッド:チェックボックスの選択状況を受け取りキャンバスの状態を設定する
public void setState( String choice ){
// Uminosachi Ver.1が選択された場合
if (choice.equals("Uminosachi Ver.1")){
state = 1; // 状態1に設定
}
// Uminosachi Ver.2が選択された場合
else if(choice.equals("Uminosachi Ver.2")){
state = 2; //状態2に設定
}
// 画像の番号を0に設定
picNum = 0;
}
// キャンバス上に描画する
public void paint(Graphics g){
// 状態1ならimg1[]の画像を表示
if (state == 1){
g.drawImage(img1[picNum], 10, 10, this );
}
// 状態2ならimg2[]の画像を表示
else if (state == 2){
g.drawImage(img2[picNum], 10, 10, this);
}
nextPic(); // 表示を終えた直後に画像の番号を1つ進めておく
}
// nextPicメソッド:表示する画像の番号を1つ進める
public void nextPic( ){
picNum++;
if(picNum >= 3){
picNum = 0;
}
}
}/** キャンバスの定義はここまで **/
MyCanvas cv; // 画像を表示するキャンバス
// アプレットを初期化する
public void init(){
// GUI部品のレイアウト方針を決める
setLayout(new BorderLayout()); //BorderLayoutでいく
// 描画用のキャンバスを用意する
cv = new MyCanvas();
cv.setSize(210, 210); //キャンバスのサイズを決める
add("Center", cv); //中央に配置する
cv.init(); //キャンバスを初期化する
// チョイスボタンを用意する
Choice c = new Choice(); //チョイスボタンを生成する
c.add("Uminosachi Ver.1");
c.add("Uminosachi Ver.2");
c.addItemListener(this); //Itemイベントのリスナーとする
add("North",c); //下方に配置する
// ボタンを用意する
Button go = new Button("Go!"); //ボタンを生成する
go.setActionCommand("go"); //アクションコマンドの名称を決める
go.addActionListener(this); //Actionイベントのリスナーとする
add("South", go); //右方に配置する
}
// Itemイベントの処理をする(チェックボックスの選択状態に関するイベント)
public void itemStateChanged(ItemEvent e){
String s = (String)e.getItem(); //選択されたチェックボックスを判別する
cv.setState(s); //キャンバスの状態を更新する
}
// Actionイベントの処理をする(ボタンに関するイベント)
public void actionPerformed(ActionEvent e){
String command = e.getActionCommand(); //アクションコマンドの名称を受け取る
if (command.equals("go")){ //マウスが押されたならば
cv.repaint(); //キャンバスの描画を行う
}
}
}
|
>> 戻る