java - KeyAdapter 监听器适用于 Windows,不适用于 Mac

标签 java windows macos swing keylistener

我创建了一个简单的 Nibbles (Snakes) 游戏并且一切正常。

但是,当我将所有内容复制到我的 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");
          }
});   

最佳答案

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

关于java - KeyAdapter 监听器适用于 Windows,不适用于 Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9973190/

相关文章:

java - 如何在 Scala 中使用 HashMap 按唯一键过滤重复项?

python - 检测计算机何时解锁 Windows

python - 在 Python 中静默打印 PDF

python - 如何通过 Python 为 Python 脚本创建 Mac 应用程序包

java - 如何使用 Spring Security SAML 配置远程发现?

java - 按编号对列表排序

windows - 使用 rsync 从 Windows 传输到 Linux

objective-c - NSService 未调用其 NSMessage

objective-c - 如何知道我们到达了 NSTableView 的最后一行

java - 在 Eclipse 中调试递归方法——有什么聪明的方法可以避免陷入更多的嵌套调用?