Detecting when user presses enter in Java

被刻印的时光 ゝ 提交于 2019-12-30 19:54:41

问题


I have a subclass of JComboBox. I attempt to add a key listener with the following code.


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

This however does not correctly detect when the user presses a key. It is actually not called at all. Am I adding this listener wrong? Are there other ways to add it?


回答1:


Key events aren't fired on the box itself, but its editor. You need to add the keyListener to the editor of the JComboBox and not the box directly:

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

Edit: fixed method call.




回答2:


This is NOT the proper approach. The editor for a JComboBox is a JTextField. If you want to handle the Enter key then you add an ActionListener to the text field.

Always avoid using KeyListeners.

Edit:

comboBox.getEditorComponent().addActionListener( ... );


来源:https://stackoverflow.com/questions/4673350/detecting-when-user-presses-enter-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!