1

私はで初期化しVKBImplementationFactoryました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);
  ...
}

メソッドでは、 VirtualKeyBoarddataChanged(int type, int index)を開きたいと思います。をクリックすると、が自動的に表示されるvkNombreことを知っています。ただし、電話のモバイル スクロール ソフトボタンを使用して に移動すると、クリックせずに に移動でき、任意の文字を入力できる場合があります。では、携帯電話で文字を入力するときに電話をかける方法は?TextFieldVirtualKeyboardTextFieldTextFieldVirtualKeyboard

注意:私はメソッドに書きSystem.out.println("zzzz");ましたがdataChanged(int type, int index)、入力すると出力に「zzzz」という2行が表示されone characterます。では、 1文字だけ入力したときに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 に答える