如何将自定义虚拟键盘​​代码设置为资源编辑器生成的状态机代码(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)的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义 AST 转换为 JS 代码

如何以编程方式将自定义图像设置为 UIBarButtonItem

Swift:如何将自定义 UICollectionViewCell 设置为圆形?

将自定义输入视图设置为全局所有文本字段的最简单方法

将自定义键盘嵌入uiview

在 Wordpress 中,如何将自定义帖子类型的默认管理员排序顺序设置为自定义列?