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を指定しなければならない。