检测用户何时按下Java键

use*_*041 6 java events swing keylistener jcombobox

我有一个JComboBox的子类.我尝试使用以下代码添加一个密钥监听器.


        addKeyListener(new KeyAdapter() 
        {
            public void keyPressed(KeyEvent evt)
            {
                if(evt.getKeyCode() == KeyEvent.VK_ENTER)
                {
                    System.out.println("Pressed");
                }
            }
        });

然而,这无法正确检测用户何时按下按键.它实际上根本没有被调用.我添加这个监听器错了吗?还有其他方法可以添加吗?

jri*_*her 14

关键事件不会在盒子本身上被触发,而是它的编辑器.您需要将keyListener添加到JComboBox的编辑器而不是直接添加到框中:

comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() 
    {
        public void keyPressed(KeyEvent evt)
        {
            if(evt.getKeyCode() == KeyEvent.VK_ENTER)
            {
                System.out.println("Pressed");
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑:固定方法调用.