2009-08-03 6 views
1

Dans les formulaires HTML, si vous appuyez sur «Entrée» alors que dans un champ de texte le formulaire sera généralement soumis.Java par défaut formulaire action ou un bouton

J'implémente un panneau de recherche dans Java Swing, et je veux inclure la même fonctionnalité que je pense que les utilisateurs attendront.

Je sais qu'il est possible d'utiliser setAction sur un JTextField pour accomplir cela, mais je me demandais s'il y avait une manière plus facile/meilleure que de définir l'action sur chaque champ. J'ai essayé de regarder autour mais il ne semble pas y avoir une solution standard à ce problème que je peux trouver!

Édition: Il existe getRootPane(). SetDefaultButton (...), mais cela semble uniquement définir le bouton par défaut pour un cadre. Cela ne fonctionnerait pas pour moi car j'utilise un panneau à onglets, dont chaque panneau a une forme dessus!

+0

afa ik, le fait que l'entrée soumette un formulaire html, est plus une caractéristique du navigateur que de html. Je crains qu'il n'y ait pas d'autre solution dans java que d'ajouter un keylistener au jtextfield – clamp

+0

Je pense qu'un ActionListener serait meilleur qu'un KeyListener - l'action listener se déclenche en entrant dans un champ de texte. –

Répondre

1

IIRC, en ajoutant un ActionListener au JTextField fournira la fonctionnalité que vous voulez

rapide Google plus tard ...

Oui - et cela semble être la méthode recommandée par Sun, comme illustré dans le text field trail...

3

Vous devrez peut-être écouter le commutateur à onglet et réinitialiser le bouton par défaut pour l'onglet en cours en utilisant getRootPane().setDefaultButton(...).

+0

Et vous utiliseriez un ChangeListener pour écouter le changement d'onglet. – camickr

1

Nous avons le même problème dans l'une de nos applications.

Vous pouvez ajouter un écouteur de touche à l'éditeur du 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 
    } 
    } 
}); 
+1

le mec demeure. – akf

+1

-1 - Vous n'utiliserez pas KeyListener pour écouter la touche Entrée sur un JTextField. Vous utilisez un ActionListener ou la méthode setAction. – camickr