2009-06-18 6 views
2

iはロボットオブジェクトのキーボードイベントを用いたM .... キーイベント

私は個別にキーを指定する必要があり、各時間....等

ロボットR =新しいロボット()。 r.KeyPress(KeyEvent.VK_A); r.KeyPress(KeyEvent.VK_B); r.KeyPress(KeyEvent.VK_C); r.KeyPress(KeyEvent.VK_D);

各キーと各キーを取得/認識するための方法はありますか? iはのkeyCode、サーバ側からのキーコードが供給mは変数.... がので、私は直接インプレース"KeyEvent.VK_D" r.keyPress(のkeyCode)等この変数を使用することができます。 教えてください....

答えて

1

キーの識別子はちょうどInt値です。サーバーの値がJavaの値と一致する場合は、値を直接入力します。そうでない場合は、サーバーの値がjavaのキー値を参照するマップを作成する必要はありません。

私は、C++のQtキーイベントとJavaキーイベントの間で同じ問題が発生しました。値も一致しません。私はこれのためのマッピングを作成しなければならなかった。

KeyEventクラスを見てください。すべてのキーは、int値でリストされます。サーバーから取得した値がこのint値と一致するかどうかを確認する必要があります。サーバーの値が一致しない場合は、マップを作成する必要があります。マップキーはサーバー値で、マップ値は押されたキーの対応するKeyEvent値です。

値が一致すると、マップを作成する必要はありません。 Robotコマンドのサーバー値を直接使用できます。

+0

どのようにして、そのマッピングを作ったのですか?keyeventsと....の間で、plzを教えてもらえますか? –

+1

Markusが書いたように、java.util.Mapを作成し、各キーのエントリを追加する必要があります。 –

0

ええと...はい? KeyEvent.VK_Dの定数は、あなたの便宜のためだけにあります。同じキーに同じ値が使用されている限り、他の場所からの数値の使用には何の問題もありません。

+0

ya私は何を言っているのか試してみました.....しかし、 "KeyEvent.VK_D"のascii値100は動作していません..... plzはこの問題を解決しています... –

+1

ASCII値を直接使用することはできません。それらを適切なキーコードにマップします。 –

0

私はあなたの質問を正しく理解していれば、何かキーが押されたときにこのアクションが起こるようにしようとしています。あなたの質問を正しく読んでいるかどうかは疑問ですが、これに対する解決策はKeyEvent.KEY_PRESSEDを使用することです。アクションが必要な場合や、キーが解放されたときに変数を設定する場合はKeyEvent.KEY_RELEASEDとなります。しかし、私はちょっと混乱しています。あなたは本当にすべてのキーが押されたときに同じアクションが起きるようにしたいのですか、あるいはキーのセットに対して一意のイベントをしたいですか?

関連する問題