gpt4 book ai didi

Java InputMap 不注册 Shift 按键

转载 作者:行者123 更新时间:2023-12-02 02:00:19 25 4
gpt4 key购买 nike

我目前正在用 Java 创建一个小的跳转和运行。我最近想从 KeyListener 切换到 Inputmap,因为 KeyListener 有时似乎没有响应。

我有一个名为 Window 的自定义 JFrame,其中包含 JPanel 和以下代码:

public class EditorGamePanel extends JPanel {

Window parent;
MainGame maingame;

public EditorGamePanel(Window parent) {
this.parent = parent;
setLayout(null);

Canvas canvas = new MainGame(parent);
canvas.setBounds(0, 0, 1920, 1080);
add(canvas);
maingame = (MainGame) canvas;

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

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, false), "pressed");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, true), "released");

am.put("pressed", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Pressed");
}
});

am.put("released", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("released");
}
});
}
}

问题是它没有记录我按下 Shift 键,但它确实记录我松开 Shift 键。其他键(例如 w)似乎两种方式都可以正常工作。我似乎在文档中找不到任何错误或任何帮助。

最佳答案

您可能使用了错误的 KeyStroke 作为下移键击。而不是:

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, 0, false), "pressed");

尝试:

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, InputEvent.SHIFT_DOWN_MASK, false), "pressed");

因为如果掩码设置为 0,则该击键无效。

关于Java InputMap 不注册 Shift 按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51681685/

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