Detectar introducir presionar en JTextField

¿Es posible detectar cuando alguien presiona Entrar mientras tipea un JTextField en java? Sin tener que crear un botón y configurarlo como el predeterminado.

Un JTextField fue diseñado para usar un ActionListener como lo hace JButton . Vea el método addActionListener() de JTextField .

Por ejemplo:

 Action action = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { System.out.println("some action"); } }; JTextField textField = new JTextField(10); textField.addActionListener( action ); 

Ahora el evento se dispara cuando se utiliza la tecla Intro .

Además, un beneficio adicional es que puede compartir el oyente con un botón, incluso si no desea que el botón sea un botón predeterminado.

 JButton button = new JButton("Do Something"); button.addActionListener( action ); 

Tenga en cuenta que este ejemplo utiliza una Action , que implementa ActionListener porque Action es una API más nueva con funciones adicionales. Por ejemplo, podría deshabilitar la Action que inhabilitaría el evento tanto para el campo de texto como para el botón.

 JTextField function=new JTextField(8); function.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //statements!!! }}); 

todo lo que necesita hacer es agregar ActionListener al JTextField como se muestra arriba! Después de presionar Enter, la acción realizará lo que quiera en la statement.

Agregue un evento para KeyPressed .

 private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_ENTER) { // Enter was pressed. Your code goes here. } } 

¿Quieres hacer algo como esto?

 JTextField mTextField = new JTextField(); mTextField.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ // something like... //mTextField.getText(); // or... //mButton.doClick(); } } }); 

Primero agregue el comando de acción en JButton o JTextField por:

 JButton.setActionCommand("name of command"); JTextField.setActionCommand("name of command"); 

A continuación, agregue ActionListener a JTextField y JButton.

 JButton.addActionListener(listener); JTextField.addActionListener(listener); 

Después de eso, escriba sobre la implementación de ActionListener

 @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your actionCommand for press Enter")) { //Do something } } 

Las otras respuestas (incluidas las aceptadas) son buenas, pero si ya usas Java8, puedes hacer lo siguiente (de una manera más nueva y más corta):

 textField.addActionListener( ae -> { //dostuff } ); 

Como se dijo en la respuesta aceptada, simplemente puede reactjsr con un ActionListener , que captura la tecla Enter.

Sin embargo, mi enfoque se beneficia de los conceptos funcionales que se introdujeron en Java 8.

Si desea utilizar la misma acción, por ejemplo, para un botón y JTextField, puede hacer lo siguiente:

 ActionListener l = ae -> { //do stuff } button.addActionListener(l); textField.addActionListener(l); 

Si necesita más explicaciones, ¡por favor hágamelo saber!

Si desea establecer una acción de botón predeterminada en una entrada de JTextField, debe hacer esto:

 //put this after initComponents(); textField.addActionListener(button.getActionListeners()[0]); 

Es [0] porque un botón puede tener muchas acciones, pero normalmente solo tiene uno (ActionPerformed).

 public void keyReleased(KeyEvent e) { int key=e.getKeyCode(); if(e.getSource()==textField) { if(key==KeyEvent.VK_ENTER) { Toolkit.getDefaultToolkit().beep(); textField_1.requestFocusInWindow(); } } 

Para escribir la lógica para ‘Enter press’ en JTextField , es mejor mantener la lógica dentro del bloque keyReleased() lugar de keyTyped() y keyPressed() .

Solo usa este código:

 SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);