【问题标题】:Check a key's state without keyPressed/Released events [closed]在没有 keyPressed/Released 事件的情况下检查键的状态 [关闭]
【发布时间】:2012-10-12 14:29:34
【问题描述】:

我需要在不使用基于事件的方法的情况下检查一个键的状态(无论它是否被按下)。存储关键状态不起作用;我需要检查密钥的实时状态。有人知道怎么做吗?平台为 JCreator v5.0 LE

【问题讨论】:

    标签: java keyboard key keyboard-events jcreator


    【解决方案1】:

    我不明白这一点,看看keyPressed()keyReleased()keyTyped() 是如何在any 键被按下时被调用的,没有失败。

    您还说存储状态不起作用。你有没有尝试过这样的事情?

    boolean[] keys = new boolean[222]; // 222 is the highest keyCode value i know
    
    public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; }
    public void keyReleased(KeyEvent e) { keys[e.getKeyCode()] = false; }
    
    // True is pressed, False is released
    public boolean getState(int keyCode) {
      return keys[keyCode];
    }
    

    这确实是检查按键“实时”状态的最合理方法。您不能不使用Listener 就向计算机询问密钥的状态。也许更多关于您需要“实时”状态的信息会给您一个更好的答案。

    【讨论】:

    • keyPressed 事件在我释放键时在 keyReleased 事件之后被调用一次:我按下向上箭头,keyPressed 被调用。我释放向上箭头,keyReleased 被调用,然后是一个 keyPressed 事件。这就是问题所在,所以我需要检查密钥的实际状态,而不是 KeyListener 告诉我的内容
    • @NathanChan 据我所知,我提供的代码正是这样做的。按下该键时,keys[the_key] 将变为 true。如果不是,它将是false。我错过了什么吗?`
    • 哦...我明白你现在遇到的问题了。我敢打赌,这是您的键盘意外发送按键信号的功能。即使它没有被任何东西接受,Java 仍然会认为某个键被按下了。
    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 2011-06-18
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多