BiorhythmApplet.set???Parameters()BiorhythmAppletの本質的なメソッドはinit()だけです。ただパラメータを受け取って属性を指定するためにいくつかの補助メソッドがあります。
init()の中で呼んでいるsetBiorhythmParameters()、setColorParameters()、setImageParameters()がそれです。
順番に見ていきます。
setBiorhythmParameters()バイオリズムを計算する日と誕生日をパラメータで設定します。
s = getParameter("birthday");
st = new StringTokenizer(s);
birthdayYear = Integer.parseInt(st.nextToken());
birthdayMonth = Integer.parseInt(st.nextToken());
birthdayDate = Integer.parseInt(st.nextToken());
が核の部分です。HTMLでパラメータが正しく設定されていれば
s = getParameter("birthday");
でsには"1968 2 7"のようにスペースで区切られた年月日が入ります。次の
st = new StringTokenizer(s);
で、この文字列をjava.util.StringTokenizerを用いて切り出す準備をします。
StringTokenizerはデフォルトではスペースを区切り文字として利用するのでst.nextToken()を実行する度に1968、2、7が切り出されます。これを順番にYear、Month、Date格納しています。
パラメータが設定されていなかった場合には、上記の処理の前に行なわれる
birthdayYear = 1969; birthdayMonth = 12; birthdayDate = 12;
がデフォルト値として用いられます。
バイオリズムを計算する日も同様に処理して、
yourBiorhythm = new Biorhythm(birthdayYear, birthdayMonth, birthdayDate,
calcYear, calcMonth, calcDate);
でパラメータの値をもとにBiorhythmオブジェクトを作成します。
BiorhythmApplet.setColorParameters()パラメータに基づいて色を設定します。どのパラメータも下の形で処理します。
s = getParameter("physicalColor");
c = new Color(Integer.parseInt(s, 16));
biorhythmCanvas.setPhysicalColor(c);
一行目の
s = getParameter("physicalColor");
でsに"FF99CC"のような16進の数字を表す文字が入ります。二行目の
Integer.parseInt(s, 16)
で16進の数字を表す文字列を整数に変換し
c = new Color("変換された整数")
でjava.awt.Colorオブジェクトを作成します。java.awt.Colorオブジェクトにはこんなコンストラクタもあるんですね。
最後に
biorhythmCanvas.setPhysicalColor(c);
で、実際に値を設定します。
setImageParameters()パラメータを用いて体力、感情、知性の状態を表す画像を設定します。いずれも下の形で処理されます。
s = getParameter("physicalImage");
i = getImage(getDocumentBase(), s);
biorhythmCanvas.setPhysicalImage(i);
一行目の
s = getParameter("physicalImage");
でsに"image/spade.gif"のような文字列が入ります。次の
i = getImage(getDocumentBase(), s);
で画像を取り込みます。
getDocumentBase()はアプレットを呼び出すHTMLがあるURLを返します。sには、そのURLからの相対パスが指定されています。例えば
HTMLのURLがhttp://www02.so-net.ne.jp/~segi/Java/MyApplets/Biorhythm/index.html
sがimage/spade.gif
だとすると
http://www02.so-net.ne.jp/~segi/Java/MyApplets/Biorhythm/image/spade.gif
の画像が読み込まれます。
最後に
biorhythmCanvas.setPhysicalImage(i);
で実際に値を設定して終わりです。