如何将自定义虚拟键盘代码设置为资源编辑器生成的状态机代码(LWUIT 或 Codenameone)
Posted
技术标签:
【中文标题】如何将自定义虚拟键盘代码设置为资源编辑器生成的状态机代码(LWUIT 或 Codenameone)【英文标题】:How to set customized virtual keyboard code into the generated statemachine code of the resource editor (LWUIT or Codenameone) 【发布时间】:2012-08-19 19:20:45 【问题描述】:在我决定提出这个问题之前,我已经在这里搜索了答案,但没有找到。抱歉我的英语不好,但这不是我的母语。
这是我的问题:
我已经将一个从资源编辑器生成的 LWUIT 1.5 应用程序放入 Netbeans,我想用我自己的按钮自定义 VirtualKeyboard,然后将它们绑定到 TextField,但我不知道将代码放在哪里。我已经尝试将它放入我的表单“MyForm”的 BeforeShow 中,或者像这样在 PostShow 中:
protected void beforeMyForm(Form f)
// If the resource file changes the names of components this call will break notifying you that you should fix the code
super.beforeMyForm(f);
VirtualKeyboard vkb = new VirtualKeyboard();
//I declared the new input
String[][] CALC_NUM = new String[][]
"1", "3", "5",,
"7", "9", "0",,
".","$OK$"
;
//Added the new input mode
vkb.addInputMode("137_C", CALC_NUM);
vkb.setInputModeOrder(new String[]"137_C");
//Bind the vkb to my TextField
VirtualKeyboard.bindVirtualKeyboard(findTfCalc(Display.getInstance().getCurrent()), vkb);
在 beforeShow 中有一个 NullPointerException 并且在 postShow 中没有任何反应。
在 TextField 的属性中,约束是数字。我知道数字和密码约束存在错误,但我尝试将 ANY 约束赋予 TextField,但它不起作用。
有人可以帮我解决吗? 在 Codenameone 中也是一样的吗? 非常感谢。
【问题讨论】:
【参考方案1】:您正在使用Display.getInstance().getCurrent()
而不是f
,在之前的显示方法中,新表单还不是当前表单。
http://codenameone.blogspot.com/2010/06/pimp-virtualkeyboard-by-chen-fishbein.html
【讨论】:
非常感谢。你对我的错误是正确的。陈的文章我看了有一段时间了,很好的例子。所以我在 beforeShow 中进行了更正,但是 vkb 没有显示我自己的任何按钮。即使我在 Codenameone 中尝试过,但它是一样的。无论如何,非常感谢 Shai,Codenameone 对我们来说是一个很棒的工具。 您在使用 J2ME 吗?这仅适用于 J2ME 设备,在其他平台上我们使用本机 VKB。 是的,我意识到仅考虑 j2me 功能并不是一个好主意。我将为我的项目实施一个全球解决方案。再次感谢。以上是关于如何将自定义虚拟键盘代码设置为资源编辑器生成的状态机代码(LWUIT 或 Codenameone)的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将自定义图像设置为 UIBarButtonItem