2012-04-02 9 views
1

シンプルなNibbles(Snakes)ゲームを作成しました。KeyAdapterリスナーはMacではなくWindowsで動作します

しかし、自分のMac(PCで開発)にすべてをコピーして同じJavaファイルをコンパイルすると、蛇を動かすためのkeyAdapterイベントリスナーが応答しません。

私は何が間違っているのか分かりません。

ここにスニペットがありますが、誰もがプログラム全体を見て欲しいなら、私はそれを私的に送ることができます。ありがとう!

getThis().addKeyListener(new KeyAdapter() { 
     public void keyPressed(KeyEvent event) {      
      if(event.getKeyCode() == KeyEvent.VK_UP) 
       if(!glass.game.getDirection().equals("D")) 
        glass.game.setDirection("U"); 

      if(event.getKeyCode() == KeyEvent.VK_DOWN) 
       if(!glass.game.getDirection().equals("U")) 
        glass.game.setDirection("D"); 

      if(event.getKeyCode() == KeyEvent.VK_LEFT) 
       if(!glass.game.getDirection().equals("R")) 
        glass.game.setDirection("L"); 

      if(event.getKeyCode() == KeyEvent.VK_RIGHT) 
       if(!glass.game.getDirection().equals("L")) 
        glass.game.setDirection("R"); 
      } 
}); 
+2

一般的なアドバイス:使用列挙型方向ではなく、文字列の。 – fiction

+1

"キーボードイベントを発生させるには、コンポーネントにキーボードフォーカスが必要です。" - [*キーリスナーの書き方*](http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html) 。 – trashgod

答えて

6

使用KeyBindings代わりKeyListenerの、KeyListenerは、SwingのJComponentの中KeyEventsを聴くために指定されていない、これはAWTコンポーネントのリスナーだ、例here

+2

+1正確です。ここのプラットフォームの違いは焦点です。 – trashgod

関連する問題