Pregunta

En formularios HTML, si presiona 'enter' mientras está en un campo de texto, el formulario generalmente se enviará.

Estoy implementando un panel de búsqueda en Java Swing, y quiero incluir la misma funcionalidad que creo que los usuarios esperan de esto.

Sé que es posible usar setAction en un JTextField para lograr esto, sin embargo, me preguntaba si había una manera más fácil / mejor que establecer la acción en cada campo. ¡He intentado mirar alrededor pero no parece que haya una solución estándar para este problema que pueda encontrar!

Editar : Hay getRootPane (). setDefaultButton (...), pero eso solo parece establecer el botón predeterminado para un marco. Eso no funcionaría para mí, ya que estoy usando un panel con pestañas, ¡cada panel tiene un formulario!

¿Fue útil?

Solución

IIRC, agregar un ActionListener a JTextField le proporcionará la funcionalidad que desea

google rápido más tarde ...

Sí, y esta parece ser la forma recomendada por Sun, como se muestra en el pista de campo de texto ...

Otros consejos

Puede que tenga que escuchar el cambio de pestaña y restablecer el botón predeterminado para la pestaña actual usando getRootPane (). setDefaultButton (...) .

Tenemos el mismo problema en una de nuestras aplicaciones.

Puede agregar un Key Listener al editor de JTextField:

txtField.getEditor().getEditorComponent().addKeyListener(new java.awt.event.KeyAdapter()
{
  @Override
  public void keyTyped(final KeyEvent e)
  {
    super.keyTyped(e);

    // Check if the user pressed Enter
    if (e.getKeyChar() == '\n')
    {
      // Action here/button press here
    }
  }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top