Detectar cuando el usuario pulsa entran en Java
-
10-10-2019 - |
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?
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