- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! スクロールバー
スクロールバーは、スライダーを動かしたときなど値が変化したときにイベントが発生します。発生するイベントとそれに対応するリスナーは AdjustmentEvent と AdjustmentListener です。ここでも半径を変化させることが可能な円描画プログラムを例に示します。
''Sample34.java''
{{pre num
/* <applet code="Sample34.class" width="100" height="120"></applet> */
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Sample34 extends Applet
implements AdjustmentListener
{
// コンポーネントの変数を定義
Scrollbar scrollbar;
SampleCanvas sampleCanvas;
public void init(){
// オブジェクトの作成
scrollbar = new Scrollbar( Scrollbar.HORIZONTAL, 50, 5, 10, 105);
sampleCanvas = new SampleCanvas();
// リスナーに登録する
scrollbar.addAdjustmentListener( this);
// レイアウトの設定
this.setLayout( new BorderLayout());
// パネルを作成
Panel p = new Panel();
p.setLayout( new GridLayout( 1, 2));
p.add( new Label( "radius", Label.CENTER));
p.add( scrollbar);
// コンポーネントをアプレットに追加する
this.add( p, BorderLayout.NORTH);
this.add( sampleCanvas, BorderLayout.CENTER);
}
/*
* AdjustmentEvent を受け取って処理する。
*/
public void adjustmentValueChanged( AdjustmentEvent ev){
if( ev.getSource() == this.scrollbar){
int r = ev.getValue();
this.sampleCanvas.setRadius( r);
this.sampleCanvas.repaint();
}
}
}
}}
スクロールバーの場合も、いままでのコンポーネントのイベント処理と基本的なところは変わりませんね。どうでしょうか、「発生したイベントをリスナーで受け取る」という仕組みに慣れていただけたでしょうか。:-)
Sample34.javaの実行結果は図のようになります。
Sample34.javaの実行結果は図38のようになります。
{{ref_image fig038.png}}
'''図 38:''' Sample34 の実行結果