gpt4 book ai didi

Java - 按住某个键后 KeyBinds 停止工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:15 24 4
gpt4 key购买 nike

*更新 - 我从 MacBook 上取出了我的项目,并将其移至 Windows 计算机(相同的代码),并且代码按照预期运行!有谁知道为什么会发生这种情况?

这是我在 Stack Overflow 上的第一个问题,因此我会尽力进行正确的格式设置。

我正在制作一个简单的乒乓球程序,需要一个 Racket 在关键事件(A 和 Z)上上下移动。当我简单地键入一个键时,按键事件工作得很好,但是当我由于某种原因按住某个键太长时间时,按键事件完全停止工作,这意味着即使是按键的键入也不会再注册任何内容,直到我重新启动程序。

我已经搜索了两个多小时的答案,但没有结果。每个看似相似的问题最终都会得到焦点问题的答案,并在 InputMap 中添加 JComponent.WHEN_IN_FOCUSED_WINDOW 。但是我已经尝试过了,但它根本没有帮助或解决我的问题。

这是我的代码:

public class ColorPanel extends JPanel implements ActionListener{
public ColorPanel(Color backColor, int width, int height){

//Non Relavent coding removed

//Code for KeyBinding

InputMap im = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();

im.put(KeyStroke.getKeyStroke(65, 0, false), "actionName");
im.put(KeyStroke.getKeyStroke(65, 0, true), "actionName");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, 0, true), "actionName");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, 0, false), "actionName");

am.put("actionName", new AbstractAction("actionName") {
public void actionPerformed(ActionEvent e) {
//System.out.println("---" + e.getActionCommand() + "---");
if(e.getActionCommand().equals("a")){
System.out.println("a!");
}else if (e.getActionCommand().equals("z")){
System.out.println("z!");
}
}
});


}

最佳答案

您需要禁用按住某个键时通常会出现的 macOS 重音弹出窗口。由于某种原因,这让 Java 感到困惑。参见这里:http://www.techradar.com/how-to/computing/apple/easy-mac-hacks-disable-the-pop-up-accent-window-when-typing-1305618

关于Java - 按住某个键后 KeyBinds 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com