现在的位置: 首页 > 综合 > 正文

仿造LWUIT textField的一次尝试

2013年09月06日 ⁄ 综合 ⁄ 共 3393字 ⁄ 字号 评论关闭

 在应用程序开发中经常遇到用户输入的问题;Sun MIDP提供了TextField控件;这个控件用起来不方便,一个原因是TextField的实现,不同的java虚拟机移植,实现不同,有的java虚拟机实现不方便,应用开发者对此无能为力;比如我现在用的这个j2me平台,用户输入必须要先暂停虚拟机,切换到另一个本地实现的窗口,输入完毕后,再恢复虚拟机;客户对此抱怨很大;另一个原因是高级UI入门简单,但要实现自己想要的功能,就显得不灵活,而且经常会添乱。所以,我决定写一个用户输入类,支持英文字符输入和数字输入,支持输入模式切换,不支持汉字输入,不需要暂停虚拟机。而LWUIT的TextField控件恰好实现了我想要的功能。

简单地模仿它写了一段测试代码:

 

基本的原理是:

1. keyPress和keyRepeated;通过特殊的按键切换输入模式、删除键值;我这里没有做光标;

2. 一种输入模式对应一个Hashtable,然后将所有的输入模式放在一个hashtable;根据输入模式、键值和按键次数查询字符;

 

实际的效果并不好;经过测试发现,当一直按住某个键时,首先是keyPressed被回调,然后是keyRepeated不断地被调用;要切换某个字符,唯一的选择是一直按住某个键,直到想要的那个字符出现;而实际的情况是,按键的响应快过显示结果,很难精确地在看到某个字符时释放按键。

还需要改进。

抱歉!评论已关闭.