1

我初始化了VKBImplementationFactoryin startApp()

public void startApp() {
        VKBImplementationFactory.init();
        Display.init(this);
        new MenuPrincipalForm(this).show();
    }

我还在 Form 中创建了一个 VirtualKeyboard :

...
private VirtualKeyboard vkNombre = new VirtualKeyboard();
...
vkNombre.setInputModeOrder(new String[]{VirtualKeyboard.NUMBERS_SYMBOLS_MODE});

我将此 VirtualKeyboard 绑定到 TextField :

cintxt=new TextField();
VirtualKeyboard.bindVirtualKeyboard(cintxt, vkNombre);

我注册dataChangeListener到这个 TextField :

public class ModifierFicheClient extends Form implements ActionListener, DataChangedListener 
{
  ...
  cintxt.addDataChangeListener(this);
  ...
}

dataChanged(int type, int index)我要打开vkNombreVirtualKeyBoard 的方法中。我知道当点击TextField然后VirtualKeyboard会自动显示。但是在TextField通过手机移动滚动软按钮导航到的TextField情况下,我可以在不单击它的情况下导航到,并且可以输入任何字母!那么VirtualKeyboard在手机上打字的时候怎么打电话呢?

注意:我System.out.println("zzzz");dataChanged(int type, int index)方法中写了,当我输入时输出写了两行“zzzz” one character!那么为什么当我只输入一个字母时dataChanged调用该方法呢?two times

4

1 回答 1

1

无需VKBImplementationFactory.init();startApp(). 因为 LWUIT 会自动检测该手机是否为触摸屏。VKB当您使用 LWUIT 1.5 或之前的版本时,数字约束不起作用。这是那个版本的错误。但它将在LWUIT 的当前存储库版本(修订:1605)上得到修复。因此,您可以从存储库中签出并使用最新的 LWUIT jar。

更新:

请参阅示例代码以VKB在关注时显示TextField

TextField textField = new TextField();
final VirtualKeyboard keyboard = new VirtualKeyboard();
textField.addFocusListener(new FocusListener() {

     public void focusGained(Component cmp) 
          keyboard.show();
     }
     public void focusLost(Component cmp) {
          keyboard.dispose();
     }
});
keyboard.setTextField(textField);
于 2011-10-21T07:37:42.470 回答