为什么数字约束在LWUIT中的虚拟键盘上不起作用?

时间:2011-09-28 06:27:23

标签: java java-me textfield lwuit

我已经测试了许多方法来在TextField中提供数字和密码约束。但它不起作用,请参阅下面的代码。

textField.setConstraint(TextField.NUMERIC | TextField.PASSWORD);
textField.setInputModeOrder(new String[]{"123"});

以上代码适用于非触控手机。但它不适用于触控手机。所以我设置了VKB的输入模式值,并将TextFieldVKB绑定,请参阅此代码。

TextField txt = new TextField(); 
txt.setConstraint(TextField.NUMERIC |TextField.PASSWORD); 
txt.setInputModeOrder(new String[]{"123"});
VirtualKeyboard vkb = new VirtualKeyboard(); 
vkb.setInputModeOrder(new String[]{VirtualKeyboard.NUMBERS_MODE});  
VirtualKeyboard.bindVirtualKeyboard(txt, vkb);
当我使用上面的代码时,

VirtualKeyboard.NUMBERS_MODE无效。 VKB显示通常的格式。这意味着AlphaNumeric格式。为什么会这样显示?

1 个答案:

答案 0 :(得分:3)

这是LWUIT中的一个错误,感谢您引起我们的注意,我将在接下来的几周内尝试修复它。它会更快,但我们需要尽快飞往JavaOne。

如果您想在本地尝试修复,只需在VirtualKeyboard.java中更新此方法:

public void setInputType(int inputType) {
    if((inputType & TextArea.NUMERIC) == TextArea.NUMERIC || 
            (inputType & TextArea.PHONENUMBER) == TextArea.PHONENUMBER) {
        setInputModeOrder(new String []{NUMBERS_MODE});
        return;
    }
    if((inputType & TextArea.DECIMAL) == TextArea.NUMERIC) {
        setInputModeOrder(new String []{NUMBERS_SYMBOLS_MODE});
        return;
    }
    setInputModeOrder(defaultInputModeOrder);
}