| ★下部のCheckbox(画像1〜3)で,画像を変更できる。開いた画像ファイル名は,上部のラベルに表示される。 ★右欄のListから色名を選択し,[背景色変更]ボタンをクリックすれば,Canvasの背景色を変更できる(List項目をダブルクリックしても同じ) ★Canvas内をクリックすれば,その位置のXY座標が表示される。 |
import java.applet.Applet;
import java.awt.*;
public class ja51 extends Applet
{
MyCanvas myc; //Canvasクラスのオブジェクト
List colorList = new List(4,false); //Listボックスの作成
Label la =new Label("(選択された画像ファイル名を表示)",Label.CENTER); //ラベルの作成
public void init(){
CheckboxGroup checkg = new CheckboxGroup(); //Checkboxをグループ化するオブジェクト
Panel pa1 = new Panel(); //パネル1の作成
pa1.setLayout(new GridLayout(1,3)); //パネル1にGridLayoutを設定
pa1.add(new Checkbox("画像1",checkg,true)); //パネル1に3個のCheckboxを配置
pa1.add(new Checkbox("画像2",checkg,false));
pa1.add(new Checkbox("画像3",checkg,false));
Panel pa2 =new Panel(); //パネル2を作成
pa2.setLayout(new GridLayout(2,1)); //パネル2にGridLayoutを設定
colorList.addItem("黄色"); //以下,Listボックスに項目を登録
colorList.addItem("ピンク色");
colorList.addItem("緑色");
colorList.addItem("赤色");
colorList.addItem("黒色");
colorList.addItem("薄い灰色");
colorList.addItem("白色");
pa2.add(colorList); //パネル2にListボックスとボタンを配置
pa2.add(new Button("背景色変更"));
myc = new MyCanvas(0,this); //Canvasの作成
myc.resize(250,200); //Canvasのサイズと背景色を設定
myc.setBackground(Color.white);
setLayout(new BorderLayout()); //AppletにBorderLayoutを設定
add("North",la); //以下,各コンポーネントを配置
add("Center",myc);
add("South",pa1);
add("East",pa2);
}
public boolean action(Event e,Object o){ //コンポーネントのイベント処理
if(e.target instanceof Checkbox){ //Checkboxがクリックされた場合
String st = ((Checkbox)e.target).getLabel(); //Checkboxのラベルを取得
if("画像1".equals(st)){
myc.chgGA(0); //MyCanvasクラスのchgGA()メソッドを呼び出す
la.setText("pho_003.gifが選択されました。"); //ラベル(la)のテキストを変更
}else if("画像2".equals(st)){
myc.chgGA(1);
la.setText("Sy1.gifが選択されました。");
}else if("画像3".equals(st)){
myc.chgGA(2);
la.setText("pic01.jpgが選択されました。");
}
}else if(e.target instanceof Button){ //ボタンがクリックされた場合
switch(colorList.getSelectedIndex()){ //選択されているListのIndex番号で分岐
case 0:
myc.setBackground(Color.yellow); //Canvasの背景色を変更する
break;
case 1:
myc.setBackground(Color.pink);
break;
case 2:
myc.setBackground(Color.green);
break;
case 3:
myc.setBackground(Color.red);
break;
case 4:
myc.setBackground(Color.black);
break;
case 5:
myc.setBackground(Color.lightGray);
break;
case 6:
myc.setBackground(Color.white);
break;
}
myc.repaint(); //Canvasを再描画することで背景色の変更が反映される
return true;
}else if(e.target instanceof List){ //List項目がダブルクリックされた場合
switch(colorList.getSelectedIndex()){
case 0:
myc.setBackground(Color.yellow);
break;
case 1:
myc.setBackground(Color.pink);
break;
case 2:
myc.setBackground(Color.green);
break;
case 3:
myc.setBackground(Color.red);
break;
case 4:
myc.setBackground(Color.black);
break;
case 5:
myc.setBackground(Color.lightGray);
break;
case 6:
myc.setBackground(Color.white);
break;
}
myc.repaint();
return true;
}
return false;
}
}
class MyCanvas extends Canvas //Canvasのサブクラスを定義
{
Image pic[]; //表示する画像を格納する配列
int n; //画像配列の,表示する画像の番号(0〜2)
int mx,my; //クリック位置のxy座標を格納する変数
public MyCanvas(int ns,Applet app){
pic = new Image[3];
pic[0] = app.getImage(app.getCodeBase(),"pho_003.gif");
pic[1] = app.getImage(app.getCodeBase(),"Sy1.gif");
pic[2] = app.getImage(app.getCodeBase(),"pic01.jpg");
n =ns;
}
public void chgGA(int s){
n = s;
repaint(); //paint()メソッドを呼び出す
}
public void paint(Graphics g){
Font f = new Font("TimesRoman",Font.BOLD,16);
g.setFont(f); //フォントの設定
g.drawString("クリック位置の座標は(" + mx + "," + my + ")です",10,20);
g.drawImage(pic[n],70,30,this); //画像の表示
}
public boolean mouseDown(Event e,int x,int y){
mx = x; //クリック位置のxy座標を格納
my = y;
repaint();
return true;
}
}
末尾