【问题标题】:KeyAdapter listener works in Windows, not on MacKeyAdapter 监听器在 Windows 中工作,而不是在 Mac 上
【发布时间】:2012-04-15 22:07:57
【问题描述】:

我创建了一个简单的 Nibbles (Snakes) 游戏,一切运行良好。

但是,当我将所有内容复制到我的 mac(在 PC 上开发)并编译相同的 java 文件时,用于移动我的蛇的 keyAdapter 事件侦听器没有响应。

我不知道出了什么问题。

这是 sn-p,但如果有人愿意看一下整个程序,我可以私下发送。谢谢!

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");
          }
});   

【问题讨论】:

  • 一般建议:使用枚举作为指示,而不是字符串。
  • “要触发键盘事件,组件必须具有键盘焦点。”—How to Write a Key Listener.

标签: java windows macos swing keylistener


【解决方案1】:

使用KeyBindings 而不是KeyListenerKeyListener 未指定用于在 Swing JComponents 中侦听 KeyEvents,这是 AWT 组件的侦听器,例如 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2013-07-12
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多