HOME>Javaアプレット講座>イベント>イベントサンプル集

イベントサンプル集

今回のイベントプログラムではアプレットの背景色をすべて白に設定しています。
それはjavaのバージョンやブラウザの環境によりデフォルトではグレーになったり白になったりしますので ここでは、すべて白に統一させています。

もし他の色を指定したい場合は

setBackground(new Color(0, 0, 0));の数字を0〜255の間で指定してやることでいろいろな色に変更できます。

ボタンで画像を切り替え

今回のイベントの概要

画像をボタンで切り替えるイベントプログラムを作ります。

今回使用するイベントリスナーはActionListenerです。

addActionListenerでイベントを受け取れるよう登録します。
またActionListenerではイベント処理メソッドを必ずactionPerformedメソッドをオーバーライドしなければいけません。
まずは今回使用する画像を用意したいと思います。
一応私の方で画像を用意していますのでそれを使いたい方は使ってください!
その際は必ずご自分のパソコンにダウンロードしてから使ってください。
画像が用意できたらこれから作成していくEventSample39.classとEventSample39.html
と同じ場所にiconフォルダを作成してその中に画像を保存してください。
00.gif
01.gif
02.gif
03.gif
04.gif
05.gif
06.gif
07.gif

では、サンプルプログラムで確認していきます。

サンプルプログラム(EventSample39.java)

//java.appletパッケージをimport宣言
//java.awtパッケージもimport宣言
//java.awt.eventパッケージもimport宣言

import java.applet.*; import java.awt.*; import java.awt.event.*; public class EventSample39 extends Applet implements ActionListener{ //画像を格納する変数を用意します。 Image img01,img02,img03,img04,img05,img06,img07,img; public void init(){ //アプレットの背景色を指定 setBackground(new Color(255, 255, 255)); //1の画像
img01 = getImage(getDocumentBase(),"icon/01.gif");
//2の画像
img02 = getImage(getDocumentBase(),"icon/02.gif");
//3の画像
img03 = getImage(getDocumentBase(),"icon/03.gif");
//4の画像 img04 = getImage(getDocumentBase(),"icon/04.gif");
//5の画像
img05 = getImage(getDocumentBase(),"icon/05.gif");
//6の画像
img06 = getImage(getDocumentBase(),"icon/06.gif");
//7の画像
img07 = getImage(getDocumentBase(),"icon/07.gif");
//初期イメージを設定します。
img = getImage(getDocumentBase(),"icon/00.gif");
Button bu = new Button("1"); Button bu1 = new Button("2"); Button bu2 = new Button("3"); Button bu3 = new Button("4"); Button bu4 = new Button("5"); Button bu5 = new Button("6"); Button bu6 = new Button("7");
//レイアウトの指定
setLayout(null); add(bu); add(bu1); add(bu2); add(bu3); add(bu4); add(bu5); add(bu6); bu.setBounds(20,10,60,20); bu1.setBounds(90,10,60,20); bu2.setBounds(160,10,60,20); bu3.setBounds(230,10,60,20); bu4.setBounds(20,40,60,20); bu5.setBounds(90,40,60,20); bu6.setBounds(160,40,60,20);
//ボタンにActionListenerを登録します。
bu.addActionListener(this); bu1.addActionListener(this); bu2.addActionListener(this); bu3.addActionListener(this); bu4.addActionListener(this); bu5.addActionListener(this); bu6.addActionListener(this);
} public void paint(Graphics g){ g.drawImage(img,90,100,this);

} //イベント処理メソッドをオーバーライドします。 public void actionPerformed(ActionEvent e){ String str =e.getActionCommand(); if(str == "1"){
img=img01; repaint();
}else if(str == "2"){
img=img02; repaint();
}else if(str == "3"){
img=img03; repaint();
}else if(str == "4"){
img=img04; repaint();
} else if(str == "5"){
img=img05; repaint();
}else if(str == "6"){ img=img06; repaint();
}else{
img=img07; repaint();
} } }

プログラムをコピーする場合すべて選択をクリックしてください。

HTMLの作成(EventSample39.html)

<html>
  <head>

      <title>ボタンで画像を切り替え</title>
  </head>
   <body>
   <h1>ボタンで画像を切り替える</h1>

    <applet code="EventSample39.class" width="300" height="300"></applet>

  </body>

</html>

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

解説

イベント処理をおこないますのでActionListenerを実装します。
まず、画像を格納する変数を用意しています。
今回は画像を7枚用意していますので変数を7つと初期設定用の変数imgを用意しています。
public void init()メソッド内では
ここではまず背景色の設定をしています。
それぞれの変数に画像データを読み込みます。
その部分が
img01 = getImage(getDocumentBase(),"icon/01.gif");です。
これは、1の画像を変数img01に画像データを読み込んでいます。
説明すると
まず、画像ファイルを読み込んでImageクラスのインスタンスを作るときは、コンストラクタは使いません。
ここで使用するのはAppletクラスのgetImageメソッドです。
getImageメソッドの引数には(画像ファイルのあるディレクトリのURL,画像ファイル名)です。
また、ファイル名もgetImage(画像ファイルのURL)とすることも可能です。
また、今回は引数にはAppletクラスのgetDocumentBase() メソッドを使用しています。
つまり、HTMLファイルと同じディレクトリに画像ファイルもあるときはこのようにgetDocumentBase()と書けばいいのです。
普通はHTMLファイルと同じディレクトリに画像ファイルも置きますよね!
わざわざ別の場所の画像を読み込んでもファイルの管理が大変になりますから、
したがってgetDocumentBase()と書くのが普通です。

画像を画面に表示させるためには GraphicsクラスのdrawImageメソッドを使います。

public void paint(Graphics g){
   g.drawImage(img,90,100,this);
}
引数には(画像ファイル、画像の左上X座標,画像の左上Y座標,ImageObserverオブジェクト)になりますが、
ImageObserverオブジェクトは通常は自分自身を意味するthisを指定してやります。
ここまでが画像に関する処理内容になります。
ボタンにイベントをおこなえる様に登録をしています。
それが
bu.addActionListener(this);
bu1.addActionListener(this);
bu2.addActionListener(this);
bu3.addActionListener(this);
bu4.addActionListener(this);
bu5.addActionListener(this);
bu6.addActionListener(this);
です。
イベント処理を記述するイベント処理メソッドをオーバーライドしています。
今回ActionListenerを実装しているのでオーバーライドするメソッドは
actionPerformedメソッドだけです。

actionPerformedメソッド内の記述ですがそこに実際イベントの処理内容を記述します。

actionPerformedメソッド内の処理ですが
if文を使い押されたボタンを判別しています。
ここでgetActionCommand()を使っています。
ここで注目してもらいたいのが各if文内でrepaintメソッドを指定しています。
このメソッドはAppletクラスのメソッドですがアプレット全体をプログラムで強制的に描き直す時に使います。
repaintメソッドは間接的にpaintメソッドを呼び出しますので書き換えたいとこだけをpaintメソッドに定義します。
また、drawImageメソッドの第一引数には初期設定用に用意したimg変数を指定しています。
つまり最初は初期設定で指定した画像が表示されています。
それをif文で画像の置き換え処理をしています。

実際にイベントの処理を確認しましょう

イベントサンプル


ページのトップへ戻る