Pregunta

Tengo una subclase de JComboBox. Trato de añadir un detector de teclas con el siguiente código.


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

Sin embargo, esto no detecta correctamente cuando el usuario pulsa una tecla. En realidad no se llama en absoluto. ¿Estoy adición de este mal oyente? ¿Hay otras maneras de añadir que?

¿Fue útil?

Solución

Los eventos clave no se disparan en la propia caja, pero su editor. Es necesario añadir el keyListener al editor de la JComboBox y no el cuadro directamente:

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

Edit:. Llamada al método fijo

Otros consejos

Este no es el enfoque adecuado. El editor de una JComboBox es un JTextField. Si desea gestionar la tecla Intro a continuación, agregar un ActionListener al campo de texto.

Siempre evitar el uso de KeyListeners.

Editar:

comboBox.getEditorComponent().addActionListener( ... );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top