2011-06-30 9 views
-1

どのキーが押されているかを認識し、必要に応じてアクションを実行しようとしています。基本的にそれらを使用してズームインを行います。「i」n「o」を押すとズームアウトします。bbで押されたキーを認識します

は、私はこれらのメソッドを使用しています

protected boolean keyDown(int keycode, int time) 
{   
    int key=Keypad.key(keycode); 
    String keyC=Integer.toString(key); 
    System.out.println("********************************* key pressed"+key); 
    System.out.println("********************************* key pressed to string"+keyC); 
    return super.keyDown(keycode, time); 
} 

public boolean keyChar(char key, int status, int time) 
{ 
    System.out.println("inside keychar"); 
    boolean retval = false; 
    int zoom=mapField.mf.getZoom(); 
    if(key== 'o'||key== 'O') 
    { 
     zoom=zoom-3; 
     mapField.mf.setZoom(zoom); 

     retval = true; 
    } 
    super.mf.setZoom(zoom); 
    return retval; 
} 

これらのメソッドはまったく機能しているように見えるいけません。

+0

作業しないと、2つのメソッドが呼び出されることはありませんか、または他のエラーが表示されていますか?また、このコードが存在するクラスを投稿することもできます。KeyListenerを使用しているかのようなものを見ることは、何が間違っているかを見る上で重要です。 – demongolem

+0

ええ、彼らは決して呼ばれていませんでした。エラーが見つかりました。これらのメソッドが内部クラスの中にあったのですが、一度それらを直接画面に置くと、それが動作するようになりました。 私はまだ押されたキーからコードや文字を取得する方法を知る必要があります。方法があるはずです...何かが紛失していますか? – BerryQuest

答えて

0

私はそれをどうやってやったらいいのか教えてください。そして、うまくいけばどこかにahaの瞬間があるでしょう。

import net.rim.device.api.system.KeyListener; 
    import net.rim.device.api.ui.Keypad; 
    // any other imports you might need 

    public final class VivartClass implements KeyListener { 

    public boolean keyChar(char key, int status, int time) 
     { 
      System.out.println("inside keychar"); 
      if(key== 'o'||key== 'O') 
      { 
       int zoom=mapField.mf.getZoom(); 
       zoom=zoom-3; 
       mapField.mf.setZoom(zoom); 
       super.mf.setZoom(zoom); 
       return true; 


      } 
      return super.keyChar(key, status, time); 
     } 

     protected boolean keyDown(int keycode, int time) { 

      int key=Keypad.key(keycode); 
      String keyC=Integer.toString(key); 
      System.out.println("********************************* key pressed"+key); 
      System.out.println("********************************* key pressed to string"+keyC); 
      return super.keyDown(keycode, time); 
     } 

     } 

次に、アプリケーションのコンストラクタで

 public Application() { 
      addKeyListener(new VivartClass()); 
      // all your other stuff you may want to do 
    } 

そのAPIでwww.blackberry.comからの推薦がある「のアプリがどのユーザーが押した文字を決定するためには、keyChar通知を使用する必要があります」。

また、他のkeyCharメソッドがコードの他の場所にないことを確認してください。存在する場合、あなたが呼び出されることを期待しているものは呼び出されません。

はまた、代わりに、キー==「O」の一部のキーがあるかどうかを確認するためにnet.rim.device.api.system.Charactersからの値の一部を使用してみます例えば得ることができます

key == Characters.LATIN_SMALL_LETTER_O 

ああ、最後に試してみてください。もしあなたが見ることができる

Keypad.getAltedChar(key) == 'o' 

あなたの状況も改善されます。

申し訳ありません私は現時点で私の前にシミュレータもデバイスもありませんので、私はあなたと一緒にこれらを実行することはできませんが、うまくいけば私はこれらのいずれかで問題にヒットしました。

関連する問題