Displayable类有两个直接子类Canvas和Screen,Canvas封装了用户界面的低级操作,GameCanvas是它的子类;Screen包含了List,Form,TextBox,Alert这4个子类,是高级用户界面组件。
使用TextBox
TextBox允许用户输入文本信息,一般作为文本编辑器来使用,它继承于Screen类,有丰富的文本处理函数。在MIDP2.0规范中,TextField也可以用于文本输入,与TextBox类似,但是TextField经常被加到Form中使用,而TextBox作为Displayable对象一般作为独立的屏幕来使用。
创建TextBox对象:
public TextBox(String title, String text, int maxsize, int constraints)
参数title是TextBox的标题,text是TextBox内初始文本,如果为null则TextBox中初始内容为空,maxsize是TextBox可以输入的最大字符数,constraints用于指定输入约束,比如只能输入0~9等。
设置输入法:
public void setInitialInputMode(int characterSubset)
使用该函数可以设置TextBox的初始输入法,用户可以不需要切换输入法就能够输入,characterSubset是输入法的字符集,大小写敏感,可以为null,输入法字符集通常以“UCB_”开头,此外一些字符集还有输入子集,通常以“IS_”开头,如果参数设置了无效的字符集或者输入法与输入限制有冲突,则该输入法设置无效。
文本处理:
1.文本替换:
public void setChars(char[] data, int offset, int length)
public void setString(String text)
参数data是一个字符数组,offset是要插入的内容在该数组的起始位置,length是要插入的长度,即从offset开始的长度。参数text是文本字符串。
2. 获得用户输入
public void getChars(char[] data)
public String getString()
getChars函数通过字符数组data返回用户输入,该数组不能为null,长度不能小于TextBox中的文本大小,否则会引发数组索引溢出异常。
3.插入文本
public void insert(char[] data, int offset, int length, int position)
public void insert (String text, int position)
position是要插入文本的位置,如果需要在当前位置插入,可以调用getCaretPosition来获得光标当前位置。参数data不能为null。
例:String src = “A”;
//在开始处插入文本
textbox.insert(src, 0);
//在最后插入文本
int size = textbox.size();
if (size > 0) {
textbox.insert(src, size -1);
}
//或者
textbox.setString(textbox.getString + src);
//在当前插入文本
int caret = textbox. getCaretPosition();
textbox.insert(src, caret);
4.删除文本
public void delete(int offset, int length)
参数 offset 和 length 不能超出文本内容,否则会引发字符串索引溢出异常。