26.1.9.22 文字列入力

ボタンや選択肢,あるいはマウスによる位置の入力で済まないときは,文字列の入力を扱う必要が出てきます.アプレットの文字列入力では,文字列を入力するための1行(TextField)または複数行(TextArea)の場所を用意します.1行入力では,行末文字(ふつうはリターンキーを打つ)を入力するとボタンと同じ仕組みでアプレットに通知が来るので,メソッドactionPerformedで処理をします.このメソッドはボタンと共有ですから,ボタンと共に使う場合にはメソッドgetSourceによる判断が必要です.複数行入力の場合には,リターンの入力はテキストの一部とみなされますから,“入力終了”は他の手段で通知することになります.

次の例題Figure6では,文字列入力(1行)を2個使って,最初の文字列を2番目で指定された回数だけ並べて表示します.

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Figure6 extends Applet
                     implements ActionListener{
  TextField str=new TextField("Sample", 40);  // 初期文字列
  TextField dup=new TextField("3", 6);        // 初期値(表示)
  int num = 3;                                // 初期値(数値)
  public void init(){
    add(str);  // 画面への貼りつけ
    add(dup);
    str.addActionListener(this);  // 入力通知依頼
    dup.addActionListener(this);
  }
  public void actionPerformed(ActionEvent e){
      if(e.getSource()==dup){
          num=Integer.parseInt(dup.getText());
          if(num < 0 || num > 20){ // 範囲外なら1に設定
              num = 1;
              dup.setText(""+num);  //文字列として設定
          }
      }
      repaint(); // どちらの領域でも,変更されたら再描画する
  }
  public void paint(Graphics g){
     int i;
     for(i=1; i <=num; i=i+1)
         g.drawString(str.getText(), 0, i*10+50); // 縦に並べる
  }
}

fileFigure6.java (iso-2022-jp)

メソッドactionPerformedの中で使われているメソッドの意味を示します.

この例ではstrとdupのどちらかです.