- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! テキストフィールド
テキストフィールドで発生するイベントは、テキストフィールド内でキー入力が行われたときや、リターンキーが押されたときです。ここではリターンキーが押されたときに発生するイベントを捕まえて処理する方法について例を示します。
テキストフィールドに円の半径を入力してリターンキーを押すと、その半径の円が描画されるというプログラムを作ってみましょう。
''Sample32.java''
{{pre num
/* <applet code="Sample32.class" width="100" height="150"></applet> */
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Sample32 extends Applet
implements ActionListener
{
// コンポーネントの変数を定義
TextField textField;
SampleCanvas sampleCanvas;
public void init(){
// オブジェクトの作成
textField = new TextField("50");
sampleCanvas = new SampleCanvas();
// テキストフィールドをリスナーに登録する
textField.addActionListener( this);
// レイアウトの設定
this.setLayout( new BorderLayout());
// コンポーネントをアプレットに追加する
this.add( textField, BorderLayout.NORTH);
this.add( sampleCanvas, BorderLayout.CENTER);
}
/*
* ActionEvent を受け取って処理する。
*/
public void actionPerformed( ActionEvent ev){
if( ev.getSource() == this.textField){
int r = Integer.parseInt( this.textField.getText());
this.sampleCanvas.setRadius( r);
this.sampleCanvas.repaint();
}
}
}
}}
テキストフィールドの場合も、リターンキーが押されたというイベントは ActionEvent と ActionListener で処理をします。ボタンの場合とほとんど同じなので、異なる部分34行目から36行目のみを解説します。34行目ではtextField 内の文字列を取得して、それを整数型(int)に変換して r に代入しています。135行目ではそれを sampleCanvas の setRadius() メソッドを用いて円の半径として設定しています。36行目では半径を設定した結果を画面に反映させるために、repaint() メソッドを用いて再描画を行う命令をしています。repaint() メソッドは Component で定義されているメソッドで、Canvas クラスは Component を継承しているので使えるのでした。
テキストフィールドの場合も、リターンキーが押されたというイベントは ActionEvent と ActionListener で処理をします。ボタンの場合とほとんど同じなので、異なる部分34行目から36行目のみを解説します。34行目ではtextField 内の文字列を取得して、それを整数型(int)に変換して r に代入しています。135行目ではそれを sampleCanvas の setRadius() メソッドを用いて円の半径として設定しています。36行目では半径を設定した結果を画面に反映させるために、repaint() メソッドを用いて再描画を行う命令をしています。repaint() メソッドは Component で定義されているメソッドで、Canvas クラスは Component を継承しているので使えるのでしたね。
Sample32の実行結果は図36のようになります。
{{ref_image fig036.png}}
'''図 36:''' Sample32 実行結果