【问题标题】:Key listener only works when the Enter key is pressed. Doesn't work for other keys按键侦听器仅在按下 Enter 键时起作用。不适用于其他键
【发布时间】:2018-08-18 22:54:28
【问题描述】:

当我按下“Enter”时,这段代码可以正常工作,但当我按下其他键时就不行。我在可编辑的JComboBox 中添加了一个键事件,该事件仅在按下“Enter”键时有效。我还想将事件添加到另一个键。

comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
    @Override
    public void keyTyped(KeyEvent e) {
        int keyChar = e.getKeyChar();
        if (keyChar == KeyEvent.VK_ENTER) {
            textField.requestFocus();
        }    
        if (keyChar == KeyEvent.VK_TAB) { // tried other key also such as shift,alt,decimal...  
            textField_2.requestFocus();
        }        
    }
});

【问题讨论】:

  • 您能否提供一个有效的SSCEE sscce.org

标签: java swing user-interface awt javax


【解决方案1】:

焦点子系统已经使用了某些键,例如 TAB,它们用于焦点事件(例如,在组件之间切换),这就是为什么您在键侦听器上看不到它们的原因。 https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html。阅读标有版本说明的部分。本文还提供了一些替代方法,说明您可以采取哪些措施来捕获 TAB 和其他焦点键。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2016-08-26
    • 2017-04-18
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多