パネルやウィジェットで画面を飾ることができても、それだけではAjaxアプリケーションとはいえない。なぜなら、画面上でマウスを動かしても、ボタンをクリックしても何の反応もないからだ。
そこで今回は、図1のように、画面左の選択肢を切り替えると、それに対応した画像が画面右に表示されるという例を元に、ウィジェットにイベント処理を組み込んむ方法を紹介しよう。
JavaScriptの場合
GWTの例を紹介する前に、JavaScriptでは図1のような処理がどう記述されるのかを確認しておこう。その理由は、イベント処理の組み込み方がJavaとJavaScriptでは大きく異なるからだ。処理結果は同じとはいえ、ソースコードの記述方法が変わって戸惑う方もいらっしゃるかもしれない。
選択肢を表示する部分のHTMLをリスト1に示す。ここではデフォルトで表示する画像を設定していない。選択肢を切り替えたときのイベント処理は、onchange属性(イベントハンドラ)に記述される。ここではリスト2のchangePhoto()関数を実行するようになっている。
そのリスト2では、画像切り替えの処理をwindowオブジェクトのonloadハンドラによって最初に画面を表示するときにも実行している。リスト1にデフォルトの画像を設定していないためだ。念のため実行結果を図2に示す。
リスト1 画像切り替え画面(HTML抜粋)
リスト2 切り替え処理(JavaScript)
var photos = null; // 選択肢切り替え
var img = null; // 画像表示
function changePhoto() { // 画像切り替え
img.src = photos.options[ photos.selectedIndex ].value;
}
window.onload = function() { // 処理ノードの取得と初期画像表示
photos = document.getElementById( 'photos' );
img = document.getElementById( 'photo' );
photos.selectedIndex = 0; // 選択肢を設定(最初の画像)
changePhoto(); // 画像切り替え
}