2011-01-12 12 views
5

Tengo una subclase de JComboBox. Intento agregar un oyente clave con el siguiente código.Detectando cuando el usuario presiona entrar en Java

 

     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 presiona una tecla. En realidad, no se llama en absoluto. ¿Estoy agregando este oyente mal? ¿Hay otras formas de agregarlo?

+0

favor nos muestran código completo, y puede que saber por qué el seguimiento de entrar en prensa en cuadro combinado se necesita? –

+0

la función no parece tener un problema, tal vez la forma en que lo invoca tiene algún problema. Necesitamos ver más del código –

+0

@ user489041, no debería usar un KeyListener para esto. – camickr

Respuesta

13

Los eventos clave no se activan en el cuadro en sí, sino en 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"); 
      } 
     } 
    }); 

Editar: llamada a un método fijo.

1

Este NO es el enfoque correcto. El editor de JComboBox es un JTextField. Si desea manejar la tecla Enter, agregue un ActionListener al campo de texto.

Siempre evite el uso de KeyListeners.

Editar:

comboBox.getEditorComponent().addActionListener(...); 
+1

¿Sería posible proporcionar algún código de ejemplo? – user489041

+0

@ user489041, ¿alguna vez ha agregado un ActionListener a un JButton? Bueno, el código es exactamente el mismo. Si no lo ha hecho, lea la sección del tutorial de Swing sobre "Cómo escribir un oyente de acción" (http://download.oracle.com/javase/tutorial/uiswing/TOC.html). – camickr

+0

Necesita comboBox.getEditor(). AddActionListener (...) – Alex

Cuestiones relacionadas