2012-04-02 54 views
1

我创建了一个简单的Nibbles(Snakes)游戏,并且一切正常。但是,当我将所有内容复制到我的Mac(在PC上开发)并编译相同的java文件时,用于移动我的蛇的keyAdapter事件侦听器不响应。KeyAdapter监听器在Windows中工作,而不是在Mac上

我不确定什么是错的。

这里是片段,但如果有人愿意看看整个程序,我可以私下发送。谢谢!

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 2012-04-02 08:40:58

+1

“要触发键盘事件,组件必须具有键盘焦点。” - [*如何编写关键侦听器*](http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html) 。 – trashgod 2012-04-02 08:58:09

回答

6

使用KeyBindings,而不是KeyListenerKeyListener没有被指定用于Swing JComponents听KeyEvents,这是监听器AWT组件,例如here

+2

+1准确;这里的平台差异是重点。 – trashgod 2012-04-02 08:58:48