やっぱり24時間表示

これまでのアプレットでは時刻は12時間表示されてます。これはget(Calendar.HOUR)が12時間表記の値を返すからです。でも、私は24時間表示が好きなのでやっぱりこうしたいですね。
現在の時刻は です。
とはいえ12時間表示が好きな人もいるでしょうからパラメータで
現在の時刻は です。
こういう風にも表示できるようにしました。ソースはDigitalClock06.javaです。
12時間表示にしたい場合は“AM”“PM”を表す画像を“A.gif”“P.gif”として用意して、呼び出すHTMLで
    <APPLET code="DigitalClock06.class" width="200" height="39">
      <PARAM name="imagedir" value="images/lumnous/">
      <PARAM name="bgcolor" value="000000">
      <PARAM name="am_pm" value="Y">
    </APPLET>
とam_pmパラメータに何らかの値を設定します。

変更点にいきましょう。インスタンス変数の宣言で
    private Image digits[] = new Image[13];
    private boolean isAMPM;
am_pmパラメータが指定されたか保持するisAMPMを導入します。また“A.gif”“P.gif”が増えるので画像の枚数を13に増やしてます。

initメソッドでパラメータの処理をします。
    isAMPM = (getParameter("am_pm") != null) ? true : false;
    if (isAMPM) {
        digits[11] = getImage(getDocumentBase(), imageDir + "A.gif");
        digits[12] = getImage(getDocumentBase(), imageDir + "P.gif");
    }
getParameterでam_pmパラメータを調べ、何かが設定されていればisAMPMにtrueを、設定されていなければfalseを代入します。
続いてisAMPMがtrueだったらdigits[11]に“A.gif”をdigits[12]に“P.gif”を読み込みます。

あとはpaintメソッドで時分秒の時を表示する部分に手を入れます。
    int hour24 = currentTime.get(Calendar.HOUR);
    if (!isAMPM && currentTime.get(Calendar.AM_PM) == 1) {
        hour24 += 12;
    }

    if (isAMPM) {
        g.drawImage(digits[(currentTime.get(Calendar.AM_PM) == 0) ? 11 : 12], imageWidth, 0, this);
        imageWidth += digits[(currentTime.get(Calendar.AM_PM) == 0) ? 11 : 12].getWidth(this);
    }

    g.drawImage(digits[hour24 / 10], imageWidth, 0, this);
    imageWidth += digits[hour24 / 10].getWidth(this);

    g.drawImage(digits[hour24 % 10], imageWidth, 0, this);
    imageWidth += digits[hour24 % 10].getWidth(this);
hour24という変数を導入しget(Calendar.HOUR)で時を代入します。続いてisAMPMがfalseでget(Calendar.AM_PM)が1だったらhour24に12を加えます。getCalendar(Calendar.AM_PM)は午前だったら0を午後だったら1を返します。
次にisAMPMがtrueの場合はget(Calendra.AM_PM)の値によって“A.gif”か“P.gif”を表示し、画像の幅をimageWidthに加えます。
時を表示する部分はget(Calendar.HOUR)の値ではなくhour24の値を表示するようにします。これでおしまい。

前の項目へ次の項目へ
「メイキング・オブ・DigitalClock」へ

最終更新日 : 1999年3月14日(日)

カメ飼ってます Valid HTML 4.0! Made with CSS midosabu@postpet.so-net.ne.jp