Expense ReportのChoiceGroupおよびTextField

 Expense Report (2)の項目で触れたように、費用項目を入力する際の費目選択などは、ChoiceGroupのリストが長くなるので、MIDP-1.0の端末上で動いているときのみEXCLUSIVEタイプのリストを使い、MIDP-2.0以降ではPOPUPタイプのリストで表示するようにしている。アプリケーションからは

new ChoiceGroupEx(title, ChoiceGroupEx.POPUP_OR_EXCLUSIVE);

と、MIDPバージョンを意識せずに利用できるようしたいので、

public class ChoiceGroupEx extends ChoiceGroup {
  public static final int POPUP_OR_EXCLUSIVE;

  static {
    final boolean isMidp10 =
      System.getProperty("microedition.profiles").indexOf("MIDP-2.") == -1;
    if (isMidp10) {
      POPUP_OR_EXCLUSIVE = EXCLUSIVE;
    }
    else {
      POPUP_OR_EXCLUSIVE = POPUP;
    }
  }
}

というクラスを定義して実現している。
 同様に、金額を入力するTextFieldのconstraintsも、MIDP-1.0ならANY、MIDP-2.0以降ならDECIMALを使うように自動的に切り換えている。DECIMALはMIDP-2.0で導入された新しいconstraintで、数字に加えて正負の符号と小数点を使うことができる。MIDP-1.0にはこれに相当するconstraintがないので、より大きな文字集合であるANYを指定しなければならない。