2012-03-23 5 views
1

私はタイトルのdidntを知っているバックグラウンドで実行している間、私はゲームを開い抱えている場合でも正常に機能して自分のアプリケーションを維持するためにどのくらい言うが、ここで私はより明確な説明を行く:Javaは:それは

私が持っていますJFrameを拡張するnetbeansでツール/アプリを作った。それはボタンがあり、ボタンが押されたときにkeyListenerを追加しました。 VK_DOWNボタンが押された場合は4回押してからenterを押します。これは非常にうまく動作しますが、私はこれをゲームで使いたいと思います。しかし、私はアプリを実行しているときに、私は何か他のものをクリックすると、それは優先順位を取る(私はここに正しい言葉thats希望)、それはアプリケーションをクリックし、それを最優先にもう一度しない限り、それはもう働きません..ここで

は、ボタンのコードです:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    jButton1.addKeyListener(new KeyAdapter() { 
    public void keyReleased(KeyEvent e) { 

    } 
    public void keyTyped(KeyEvent e) { 
    // TODO: Do something for the keyTyped event 
    } 
    public void keyPressed(KeyEvent e) { 
    // TODO: Do something for the keyPressed event 
     if (e.getKeyCode() == e.VK_L){ 
      System.out.println("Works"); 
     } 
     if (e.getKeyCode() == e.VK_DOWN){ 
      System.out.println("Down Arrow Pressed!"); 
      e.setKeyCode(e.VK_DOWN); 
      e.setKeyCode(e.VK_DOWN); 
      e.setKeyCode(e.VK_DOWN); 
      e.setKeyCode(e.VK_DOWN); 
      e.setKeyCode(e.VK_ENTER); 

     } 
    } 
    }); 
} 

私はゲームでVK_DOWNの矢印キーを押すとアプリプレスを4回、それを聞かせて、その後、自身で入力押します。これは、私が他のすべての上にアプリケーションを実行しているときにのみ動作します。ゲームを実行している場合は、ゲームの優先順位が高くなるため、アプリは動作しません。

助けてください。

+1

あなたが探している言葉は「フォーカス」です.1つのウィンドウには「フォーカス」しかなく、キーイベントなどがOSから送信されます。私はJavaを使っているのではないが、OSからのイベントをリスンすることなく直接主要な状態をプログラムで見られるようにすることは可能です。 – thecoshman

+0

ゲームやGUIで「下矢印」のキーイベントが機能したいのですが、JREがあなたの楽しみを台無しにしている可能性がありますか? –

+0

申し訳ありません。私はJavaを初めて使い慣れました。 GUIの正確な意味は?はい、ゲームからの「下向き矢印」キーイベントがツールで検出され、ツールがキーボードに応答して何をするかを伝えたい場合、この場合はsetKeyCodeに「下向き矢印」を4回伝えます+ setKeyCode 'Enter'は1回です。 –

答えて

0

いくつかのネイティブコードを使用しない限り、Javaで行うことはできません。

+0

私はWindowsEventを使用して、どのウィンドウがアクティブになっているかを確認しています。次に、このコードを使用してアクティブになっているウィンドウを使用します。コードは問題ありませんが、何らかの理由で正常に機能しません。 –

+0

@MirwaisMaarij Javaは、グローバル・キー・バインディング(またはそれを呼びたいもの)をサポートしていません。あなたは別の言語を使うべきです。 – Stripies

3

は、このAPIをチェックアウト:

「JNativeHookは、Javaのための世界的なキーボードとマウスフックを提供するためのライブラリです主な目的は、そのJavaアプリケーションにキーボードとマウスのイベントを配信するためのポータブルかつ信頼性の高い方法を提供することにあります。これはバックグラウンドで実行されるアプリケーションには有益ですが、ホットキーやマウスイベントを介してユーザーとのやりとりが必要になる可能性があります。

http://code.google.com/p/jnativehook/

+0

これは問題の完璧な解決策のように聞こえる! – thecoshman

+0

私はこれのソースをダウンロードしました。だから私のコードを上から持ってきて、「下矢印」キーを押すたびにこのネイティブフックを実行しているときに、私が望むように4回シミュレートします。 –

+0

私はWindowsEventを使用して、どのウィンドウがアクティブ化されているかを確認しています。次に、このコードを使用してアクティブになっているウィンドウを使用します。コードは問題ありませんが、何らかの理由で正常に機能しません。 –

0

ええと、それは動作しますが、あなたのキーイベントを発生させるために、AWTパッケージからRobotクラスを尽くすかどうかわかりません。あなたのコードよりもうまくいくはずです。

関連する問題