【问题标题】:How do I check if the left angle bracket key is pressed?如何检查左尖括号键是否被按下?
【发布时间】:2016-04-20 17:46:19
【问题描述】:

在 Java 中,我检查了虚拟键代码列表,没有 '

我想知道是否必须检查是否按下了 Shift 键,然后检查是否也按下了逗号键,但我不确定如何在 KeyHandler 类中使用keyPressed 方法的 switch 语句。

【问题讨论】:

    标签: java keyboard keycode


    【解决方案1】:

    KeyHandler keyPressed 方法将收到一个KeyEvent。您可以在 KeyEvent 上拨打 isShiftDown() 以查看当前是否按下了 shift 键。

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_COMMA && e.isShiftDown()) {
             // do your thing!
        }
    }
    

    你也可以试试:

    public void keyTyped(KeyEvent e) {
        if (e.getKeyChar() == '<') {  
             ...
        }
    }
    

    注意使用keyTyped 而不是keyPressedkeyTyped 仅在按键输出字符时触发,而不是在每次按键时触发。这种方法更有可能适用于其他类型的键盘。但是我没有尝试过,所以我不知道它是否会起作用。

    【讨论】:

    • 这适用于所有键盘布局,还是仅适用于 QWERTY?
    • @aryn.galadar 你是对的,keyPressed 建议只会在shift + comma == &lt; 的键盘上检测到&lt;
    【解决方案2】:

    我相信您想分别对“”使用 VK_LESS 和 VK_GREATER。

    【讨论】:

    【解决方案3】:

    你可以使用 KeyEvents.getKeyChar() 方法

    public void keyPressed(KeyEvent e) {
        if (evt.getKeyChar().equals("<")) {
             /*your code*/
        }
    }
    

    【讨论】:

    • 来自文档:字符输入由 KEY_TYPED 事件报告:KEY_PRESSED 和 KEY_RELEASED 事件不一定与字符输入相关联。因此,保证getKeyChar方法的结果只对KEY_TYPED事件有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2015-09-25
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多