【问题标题】:Using HashSet to check if a key is pressed使用 HashSet 检查某个键是否被按下
【发布时间】:2016-06-19 02:20:40
【问题描述】:

我最近一直在写一个程序,它有一个:

public static Set<Character> pressed = new HashSet<Character>();

现在 Set “pressed” 被添加到如下:

public void keyPressed(KeyEvent e) {
    pressed.add(e.getKeyChar());
}
public void keyReleased(KeyEvent e) {
            pressed.remove(e.getKeyChar());
}
public void keyTyped(KeyEvent e) {
    //System.out.println("keyTyped");
}

现在如果我想做类似的事情

pressed.contains(x);

x 是键盘上的一个键,我该怎么做。我试过了

 pressed.contains(KeyEvent.VK_UP);

但是,即使我按下向上箭头键,“按下”设置也不包含事件 VK_UP。我只需要知道如何确定在 .contains 参数中输入的内容以检查它是否在 Set 中。

【问题讨论】:

  • 我认为KeyEvent.VK_UP 代表一个int,而不是一个char,但也许我错了。去检查。
  • 无论如何,为了获得最佳帮助,请考虑创建并发布您的minimal reproducible example。

标签: java keyboard keypress hashset


【解决方案1】:

你在哪里

public static Set<Character> pressed = new HashSet<Character>();
---
pressed.add(e.getKeyChar());

你应该这样做

public static Set<Integer> pressed = new HashSet<>();
...
pressed.add(e.getKeyCode());
                    ^^^^

也对删除代码进行类似的更改。

键代码是您要比较的原始键盘代码,而不是分配给键的字符(并非所有键都分配了字符)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2017-05-26
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多