スクロールバーは、スライダーを動かしたときなど値が変化したときにイベントが発生します。発生するイベントとそれに対応するリスナーは AdjustmentEvent と AdjustmentListener です。ここでも半径を変化させることが可能な円描画プログラムを例に示します。
Sample34.java
01|/* <applet code="Sample34.class" width="100" height="120"></applet> */
02|import java.applet.Applet;
03|import java.awt.*;
04|import java.awt.event.*;
05|
06|public class Sample34 extends Applet
07| implements AdjustmentListener
08|{
09| // コンポーネントの変数を定義
10| Scrollbar scrollbar;
11| SampleCanvas sampleCanvas;
12|
13| public void init(){
14| // オブジェクトの作成
15| scrollbar = new Scrollbar( Scrollbar.HORIZONTAL, 50, 5, 10, 105);
16| sampleCanvas = new SampleCanvas();
17|
18| // リスナーに登録する
19| scrollbar.addAdjustmentListener( this);
20|
21| // レイアウトの設定
22| this.setLayout( new BorderLayout());
23|
24| // パネルを作成
25| Panel p = new Panel();
26| p.setLayout( new GridLayout( 1, 2));
27| p.add( new Label( "radius", Label.CENTER));
28| p.add( scrollbar);
29|
30| // コンポーネントをアプレットに追加する
31| this.add( p, BorderLayout.NORTH);
32| this.add( sampleCanvas, BorderLayout.CENTER);
33| }
34|
35| /*
36| * AdjustmentEvent を受け取って処理する。
37| */
38| public void adjustmentValueChanged( AdjustmentEvent ev){
39| if( ev.getSource() == this.scrollbar){
40| int r = ev.getValue();
41| this.sampleCanvas.setRadius( r);
42| this.sampleCanvas.repaint();
43| }
44| }
45|}
スクロールバーの場合も、いままでのコンポーネントのイベント処理と基本的なところは変わりませんね。どうでしょうか、「発生したイベントをリスナーで受け取る」という仕組みに慣れていただけたでしょうか。:-)
Sample34.javaの実行結果は図38のようになります。
図 38: Sample34 の実行結果
最終更新時間:2011年01月08日 18時42分06秒