Acción o botón de formulario predeterminado de Java
-
10-07-2019 - |
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!
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
}
}
});