26.1.9.21 選択値入力

いくつかの選択肢の一つを選ぶというタイプの入力があります.たとえば誕生月や星座の入力は,12個の値の中の一を選びます.この場合に,キーボードから数値や星座名を打ち込ませると,綴り誤りや「14月」のような不正値の判断でプログラムが複雑になってしまいます.Javaでは,ボタン(ON/OFF)とテキスト(文字列)の中間的な入力ツールとして,選択肢を提示してその中の一つを選ばせる選択入力が用意されています.ボタンを押すと円が大きくなる例題("Figure4")を改造して,10段階の大きさの円を描かせてみましょう.

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Figure4c extends Applet
                     implements ItemListener{
  int cx, cy, r, i;
  Choice rad = new Choice();
  public void init(){
    r = 10;
    cx = getSize().width/2;
    cy = getSize().height/2;
    for(i=1; i<=10; i=i+1)
        rad.addItem("" + i); // 10通りを「文字列」として登録
    add(rad);
    add(new Label("Radius"));
    rad.addItemListener(this);
    }
  public void itemStateChanged(ItemEvent e){
    i = rad.getSelectedIndex()+1; // メソッドは 0,1,2,…を返す.
             // 文字列を得るにはgetSelectedItemを使う
    r = (int)(cx/10 * i);
    repaint();
  }
  public void paint(Graphics g){
     g.drawOval(cx-r, cy-r, 2*r, 2*r);
  }
}

fileFigure4c.java (iso-2022-jp)

選択肢入力とボタン入力を比較しておきます.

ボタン選択肢
クラス名ButtonChoice
イベント名ActionEventItemEvent
登録依頼ActionListenerItemListener
メソッドactionPerformeditemStateChanged