トップ 一覧 検索 ヘルプ RSS ログイン

イベント/チョイスの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! チョイス

チョイスの項目が変更されたときにはItemEvent というイベントが発生します。ItemEvent を受け取るには ItemListener を実装します。選ばれた選択肢によって表示される円の大きさが変化するプログラムを例に見てみましょう。

''Sample33.java''
{{pre num
/* <applet code="Sample33.class" width="100" height="120"></applet> */
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Sample33 extends Applet
                      implements ItemListener
{
    // コンポーネントの変数を定義
    Choice choice;
    SampleCanvas sampleCanvas;
    
    public void init(){
        // オブジェクトの作成
        choice = new Choice();
        sampleCanvas = new SampleCanvas();
        
        // チョイスに項目を追加
        choice.add("50");
        choice.add("100");
        choice.add("150");
        
        // リスナーに登録する
        choice.addItemListener( this);
        
        // レイアウトの設定
        this.setLayout( new BorderLayout());
        
        // パネルを作成
        Panel p = new Panel();
        p.setLayout( new GridLayout( 1, 2));
        p.add( new Label( "radius", Label.CENTER));
        p.add( choice);
        
        // コンポーネントをアプレットに追加する
        this.add( p, BorderLayout.NORTH);
        this.add( sampleCanvas, BorderLayout.CENTER);
    }
    
    /*
     * ItemEvent を受け取って処理する。
     */
    public void itemStateChanged( ItemEvent ev){
        if( ev.getSource() == this.choice){
            int r = Integer.parseInt( (String)ev.getItem());
            this.sampleCanvas.setRadius( r);
            this.sampleCanvas.repaint();
        }
    }
}
}}

Sample33  も ActionListener が ItemListener になった以外は今までのものとほとんど変わりありません。41行目で(String)ev.getItem() という風に記述してあります。これは ItemEvent クラスの getItem() メソッドの戻り値が Object 型であるのに対し、Integer クラスの parseInt メソッドに指定できるのは String 型と決まっているので Object型から String 型へ強制的に型変換を行っています。このように、明示的に型を変換することを型キャストするといいます。

Sample33の実行結果は図のようになります。

{{ref_image fig037.png}}
'''図 37:''' Sample33 の実行結果