¿Es posible detectar cuando alguien presiona Ingrese mientras escribe en un JTextField en java? Sin tener que crear un botón y configurarlo como el predeterminado.Detectar introducir presionar en JTextField
Respuesta
A JTextField
fue diseñado para usar un ActionListener
como un JButton
es. Consulte 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 activa cuando el Enter se utiliza clave.
Además, un beneficio adicional es que se puede compartir al oyente con un botón, incluso si usted no desea que el botón de un botón predeterminado.
JButton button = new JButton("Do Something");
button.addActionListener(action);
Nota, este ejemplo utiliza un Action
, que implementa ActionListener
porque Action
es una API más reciente con características de suma. Por ejemplo, puede deshabilitar el Action
que deshabilitarí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 necesitas hacer es addActionListener to the JTextField como arriba! Después de presionar Ingrese, la acción realizará lo que quiera en la declaración.
Bonificación para el bloque en línea. Mantiene el código limpio. –
Añadir 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.
}
}
-1, use la API de la manera en que fue diseñada para ser utilizada. – camickr
-1 :(Los KeyListeners están en un nivel demasiado bajo desde la perspectiva de Swing. Use la API que está destinada a ser utilizada con Swing :-) –
Por alguna razón, esta publicación es la más positiva votada por usuarios anónimos. :-) Sí, esta fue mi solución que encontré. Gracias por los comentarios! –
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 de 'Enter prensa' en JTextField
, es mejor mantener la lógica dentro del bloque en lugar de keyTyped()
& keyPressed()
keyReleased()
.
-1 :(para repetir el mismo error nuevamente, que ya ha sido votado negativamente en las respuestas anteriores, junto con la razón especificada para el mismo. 'KeyListeners' está demasiado bajo nivel desde la perspectiva de' Swing'. la API que está destinada a ser utilizada con 'Swing' :-) –
primero Añadir comando de acción en JButton o JTextField por:
JButton.setActionCommand("name of command");
JTextField.setActionCommand("name of command");
A continuación, agregue ActionListener tanto JTextField y JButton.
JButton.addActionListener(listener);
JTextField.addActionListener(listener);
Después de eso, en que ActionListener aplicación escribir
@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
}
}
sólo tiene que utilizar este código:
SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);
Si desea establecer una acción de botón predeterminado en un JTextField entrar, usted tiene para 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).
¿Desea 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();
}
}
});
Las otras respuestas (incluyendo los aceptados) son buenos, pero si ya utiliza Java8, puede hacer lo siguiente (en un camino más corto, más reciente):
textField.addActionListener(
ae -> {
//dostuff
}
);
A medida que el aceptado respuesta dicha, simplemente puede reaccionar con un ActionListener
, que captura la tecla Enter.
Sin embargo, mi enfoque tiene el beneficio de los conceptos funcionales que se introdujo en Java 8.
Si desea utilizar la misma acción, por ejemplo para un botón y el JTextField, puede hacer lo siguiente:
ActionListener l = ae -> {
//do stuff
}
button.addActionListener(l);
textField.addActionListener(l);
Si necesita más información, ¡por favor hágamelo saber!
- 1. Caracteres alemanes en JTextField
- 2. Cómo borrar JTextField cuando el mouse hace clic en JTextField
- 3. Cómo convertir JTextField a String y String en JTextField?
- 4. Escucha de cambio de valor en JTextField
- 5. ¿Mostrar evento para JTextField en Java?
- 6. Texto de ejemplo en JTextField
- 7. Deseleccionar selección predeterminada en JTextfield
- 8. Cómo desenfocar un JTextField
- 9. ¿Cómo validar un JTextField?
- 10. Java establece el foco en jbutton al presionar enter
- 11. .Net KeyEventArgs volver vs introducir
- 12. Introducir fórmula celular usando VBA
- 13. Cómo introducir la propiedad requerida en GAE
- 14. cómo quitar MouseListener/ActionListener en un JTextField
- 15. Borde transparente de JTextField en Swing
- 16. Problemas de JTextField con Numpad
- 17. Java Swing de JTextField inserción
- 18. Entradas en SDL (al presionar la tecla)
- 19. JTextField: Cómo configurar el texto a la izquierda de JTextField cuando el texto es demasiado largo
- 20. ¿Busca introducir pestañas en la aplicación basada en documentos, ideas?
- 21. INTRODUCIR CAPTURA en un CONVERTIR en una instrucción seleccionada
- 22. Validación de WPF al introducir la tecla
- 23. JTextField con estilo JLabel utilizando GTKLookAndFeel
- 24. ¿Hay alguna forma de invocar manualmente el evento "Introducir clave" en un cuadro de texto?
- 25. Personalizar javax.swing.JFileChooser para incluir un JTextField adicional
- 26. Cómo limpiar el JTextField haciendo clic JButton
- 27. swing: Oyente apropiado para JTextField change events
- 28. Copiar texto de una deshabilitada JTextField
- 29. Swing JTextField cómo quitar el borde?
- 30. Cómo alinear pares JLabel-JTextField verticalmente
De acuerdo. Solución más elegante que la mía, en el caso general. – Kos
@camickr es un experto de Java oscilaciones –